日月逆转

我有一个单元格,内容如下:

2015年1月2日

这个单元格是格式化的

然后我复制这个值并把它放到我的模块类中:

Set Line = New CTravelLine Line.Date= Cells(1, 8).value 

一切工作正常,直到我把这个值在另一个单元格的时刻:

2015年2月1日的值为2015年1月1日。 我正在使用这种格式(日/月/年)。 我有这样的印象:当天数低于月份时,这两个数值是相反的。 无论我尝试什么方法,值都是相反的:

方法1:

  Dim WrdArray() As String, datetest As String WrdArray() = Split(travelLine.Date, "/") datetest= WrdArray(0) & "/" & WrdArray(1) & "/" & WrdArray(2) Cells(5, 5) = datetest 

方法2:

  Cells(5, 5) = travelLine.Date 

我不明白我该如何解决这个问题。 在此先感谢您的帮助。

这可能是由于“区域格式问题”而发生的。

当从其他数据源导入date时,Excel有强制使用美国date格式(mm / dd / yyyy)的习惯。 因此,如果date恰好是1 – 12,那么Excel会将date切换为mm / dd / yyyy。

当从文本文件导入date时,VBA代码中有一个选项可以应用区域格式来纠正此问题。

要么

将excelsheet中date列的数字格式从“date”格式类别更改为“文本”; 保存。 (保存后运行VBA代码,如果有的话,现在检查date格式是'文本'还是改回'date'。)

如果它已经变回“date”,请尝试将其修改为“文本”

如果是“文字”; 纠正错误的date单元格并保存excel表单。 这将使date不会自动更改为美国格式。

我和你有同样的问题。

让我解释一下我想要做的事情:

1)我有一个date的CSV文件。 2)我在variables表中复制我的表格的范围。 范围包含一些date列。 3)我在我的桌子上做了一些操作(非常基本的)4)我转置我的variables表(因为只有一个variables表的最后一个维度可以增加)5)我把我的variables表放在一个新的表。

我发现:执行步骤1)2)3)和4)后没有date问题。 date问题在工作表上显示时出现

考虑到Avidan在15年2月24日13:36的post中说过,我想这是强制美国格式mm / dd / yyyy的excel …所以我只是在我的程序一开始就改变了date格式:

在开始任何操作date之前:1)做.Cells(“我的date是”)=格式(.Cells(“我的date是”),“mm dd yy”)2)执行你的程序3)一张纸4)备份到您直接在纸上的date格式

只要使用:

 Line.Date = cDate(Cells(1, 8).value2)