日和月是相反的

时间:2015-02-24 13:31:58

标签: excel vba excel-vba

我有一个包含以下内容的单元格:

01/02/2015

单元格是日期格式化的。

然后我复制该值并将其放入我的模块类中:

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

一切正常,直到我把这个值放在另一个单元格中:

值01/02/2015成为02/01/2015。 我正在使用这种格式(dd / mm / yyyy)。我的印象是,当数字低于月份时,2个值会相反。无论我尝试何种方法,这些值都会颠倒过来:

方法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

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

4 个答案:

答案 0 :(得分:2)

这可能是因为“地区格式问题”而导致的。

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

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

更改excelsheet中日期列的数字格式,从' date'格式类别为' text&#39 ;;保存。 (保存后运行VBA代码,如果有的话。现在检查日期格式是' text'还是更改回' date'。)

如果已更改回' date'尝试将其修改为' text'

如果它'文字&#39 ;;更正错误的日期单元格并保存Excel工作表。这将使日期不会自动更改为美国格式。

答案 1 :(得分:0)

我和你有同样的问题。

让我解释一下我想做什么:

1)我有一个带有日期的csv文件。 2)我在变量表中复制我的工作表范围。该范围包含一些带日期的列。 3)我在桌子上做了一些操作(非常基本的) 4)我转换我的变量表(因为只有变量表的最后一个维度可以增加) 5)我将变量表放在新表上。

我发现了什么: 执行步骤1)2)3)和4)后没有日期问题。在工作表上书写时会显示日期问题......

考虑到Avidan在2月24日和15日13:36的帖子上所说的话,我想这是强大的美国格式mm / dd / yyyy ...所以我只是更改日期格式我的计划的一开始:

在开始任何操作日期之前: 1)做 .Cells("我的日期是")=格式(.Cells("我的日期是")," mm dd yy") 2)执行你的程序 3)在一张纸上写表 4)直接在表单上备份您喜欢的日期格式

答案 2 :(得分:0)

长话短说,我遇到了类似的问题,即某些单元格中的日期工作正常,但是无论我复制粘贴还是手动输入,都不断翻转日期,我将整个数据文本都转换为列和单元格格式的解决方案其中不起作用。

解决方案实际上不在excel中,而是在区域和语言设置中……我知道了!!!

要在格式标签中将日期显示为MM / DD / YYYY,请将格式更改为美国。

要在格式标签中将日期显示为DD / MM / YYYY,请将格式更改为英国。

Voila!

答案 3 :(得分:-1)

只需使用:

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