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

时间:2014-06-04 04:49:03

标签: date excel-vba excel-2010 vba excel

背景信息 我目前有一个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次,请参见image:http://tinypic.com/r/2vslyd5/8/

当我将数字格式更改为“常规”时,表示VBA表单中的纯文本日期已转换为4月日期。即改变格式并不是一件简单的事情,日期实际上已经完全改变了:

  • 41789(2014年5月30日)
  • 41789(2014年5月30日)
  • 41789(2014年5月30日)
  • 41735(06/04/2014)
  • 41735(06/04/2014)
  • 41735(06/04/2014)

我为此尝试了几种解决方法,包括:

  1. 突出显示列A并将格式更改为日期,格式为DD / MM / YY
  2. 在“主页”选项卡下选择日期格式 - >号码组 - >日期下拉框
  3. 检查Windows和Excel中的区域设置
  4. 我也试过进入数据 - >数据工具 - >文本到列。然后在步骤3中选择日期下的DMY - 这似乎是我在其他论坛中遇到的问题的主要修复之一。
  5. 根据Excel表格的性质,每次我的提交表单添加一条记录时,表格都会延长一行 - 我不确定这是否会产生任何影响,并且不知何故从表格中生成错误的日期设置?

    任何对此进行故障排除的想法都会非常棒。

1 个答案:

答案 0 :(得分:0)

在写回单元格时,您需要使用CDate将文本转换为实际日期值,以便VBA无法解释它:

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