Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 表中的日期以不正确的区域格式提交_Date_Excel_Excel 2010_Vba - Fatal编程技术网

Date 表中的日期以不正确的区域格式提交

Date 表中的日期以不正确的区域格式提交,date,excel,excel-2010,vba,Date,Excel,Excel 2010,Vba,背景信息 我目前有一个VBA用户表单,它将每日KPI提交到Excel 2010中的Excel表中。表单设置为将今天的日期以DD/MM/YYYY格式放入文本框中,然后在我点击提交时将该信息传输到Excel工作表。以前,这个过程工作顺利,因为它只是传输纯文本。但现在,日期以美国格式MM/DD/YYYY提交。我很确定问题出在Excel的某个地方,但下面是我的VBA代码: 'First it populates the text box Private Sub UserForm_Ac

背景信息 我目前有一个VBA用户表单,它将每日KPI提交到Excel 2010中的Excel表中。表单设置为将今天的日期以DD/MM/YYYY格式放入文本框中,然后在我点击提交时将该信息传输到Excel工作表。以前,这个过程工作顺利,因为它只是传输纯文本。但现在,日期以美国格式MM/DD/YYYY提交。我很确定问题出在Excel的某个地方,但下面是我的VBA代码:

  'First it populates the text box    
    Private Sub UserForm_Activate()
         TextBox1.Text = Format(Now(), "DD/MM/YYYY")
         End Sub
    'Then it transfers to the spreadsheet
     With nwb.Sheets("daily_tracking_dataset_master")
        .Cells(emptyRow, 1).Value = TextBox1.Value
主要问题 在Excel端的某个地方,数据现在以美国日期格式提交不正确,因此6月4日提交的数据将变为4月6日提交的数据,见图:

当我将数字格式更改为General时,它显示VBA表单中的纯文本日期已转换为四月日期。也就是说,更改格式不是一个简单的问题,日期实际上已经完全更改:

41789 30/05/2014 41789 30/05/2014 41789 30/05/2014 41735 06/04/2014 41735 06/04/2014 41735 06/04/2014 为此,我尝试了几种变通方法,包括:

突出显示A列,并将格式更改为DD/MM/YY 在主页选项卡->数字组->日期下拉框下选择日期格式 在Windows和Excel中检查区域设置 我也尝试过进入数据->数据工具->文本到列。然后在第3步选择DMY under Date-这似乎是我在其他论坛上遇到的问题的主要解决方法之一。 根据Excel表格的性质,每次我的提交表格添加一条记录时,表格都会扩展一行-我不确定这是否会产生任何影响,并且表格中会以某种方式生成错误的日期设置


任何解决这一问题的方法都非常好。

在回写单元格时,您需要使用CDate将文本转换为真实的日期值,以便VBA不会误解它:

.Cells(emptyRow, 1).Value = cdate(TextBox1.Value) 

您是否尝试过.CellsemptyRow,1=FormatTextBox1.Value,DD/MM/YYYY?不幸的是,出现了同样的问题。VBA方面以前工作正常:我无法复制该问题。当我将一个新日期添加到一个表中,其中日期列的格式为General,使用以下语法:RangeA2=FormatNow,DD/MM/YYYY,我得到的预期输出为2014年4月6日。如果它以前工作正常,您是否恢复了自那以后对代码所做的任何更改?也许在.CellsemptyRow上设置一个断点,1.Value=TextBox1.Value,并在写入工作表之前检查TextBox1的值会有所帮助。嗨,ARich,我已经尝试了一些方法。1.我已指示提交表单提交到没有格式的全新工作簿-存在相同的错误。2.我遵循了您的第二个选项,完全不考虑文本框,而是使用.CellsemptyRow,1.Value=FormatNow,DD/MM/YYYY 3。我还浏览了数据,文本框值为2014年6月4日。由于在发生错误时我没有对VBA代码进行任何更改,因此我纯粹是在Excel中使用pivot表,我猜这是Excel的问题。但由于我提交了一本没有格式的全新书籍,我感到不知所措。