1

我从一个电子表格中获取日期并将它们输出到另一个电子表格中。获取日期后,当我 debug.print 格式正确时。当我输出日期时,debug.print 也会显示正确的格式。但是,值刚刚发送到的电子表格上的格式未显示正确的格式。

我在用:

Sheets(SheetName).Cells(RowNum, ColNum).Value = Data
Sheets(SheetName).Cells(RowNum, ColNum).NumberFormat = "dd/mm/yyyy"

我粘贴了值之后,但是月份和日期仍然以错误的方式切换。

有什么我做错了吗?如果我右键单击单元格,它认为它的日期是 dd/mm/yyyy 但它显示的是 4 月 9 日而不是 9 月 4 日。

4

4 回答 4

1

很抱歉恢复旧帖子,但是我在 VBA 输出有效日期时遇到问题,因为美国风格,实际日期已更改,例如 5 月 1 日更改为 1 月 5 日。我遇到了这篇文章,但我没有找到我需要的答案在这里,现在我已经解决了,我想我会分享它:

关键不是将存储日期的变量定义为“日期”而是“双精度”,例如

Dim ReportDate As Double
ReportDate = Date


Range("E6").Value = ReportDate

这是因为它输出数字“日期值”,然后在本地格式化,例如 41644 被格式化为“05/01/14”使用英国格式或“01/05/14”使用美国格式。

希望这对其他人有用(可能是我忘记了如何在六个月内解决它时的我)。

于 2014-07-02T01:20:22.860 回答
1

这可能会给本地化带来一些麻烦:

NumberFormatLocal如果 DanielCooks 提示没有帮助,请尝试使用;)

编辑:库克先生曾说过,要检查给定的数据是否正确。

编辑:

在我的德语版本中,我很难将其/用作分隔符,这就是为什么我尝试使用此代码.NumberFormat ="dd-mm-yyyy;@"- 工作正常;我可以随意切换日期和月份。

编辑:

.NumberFormatLocal = "TT/MM/JJJJ"我必须使用德国短裤来表示日、月和年,但现在我可以用作/分隔符。

您应该尝试一些格式字符串;)

于 2012-09-17T14:27:54.473 回答
0

(1) 您需要将变量定义为“日期”类型以读取输入,然后在将其分配给日期变量之前设置日期格式。

(2) 您还需要格式化日期输出以使其正常工作!

' **读取日期输入****

Dim date1 as Date

Range("B2").NumberFormatLocal = "dd/mm/yyyy"

date1 = Range("B2").Value

' **输出日期****

Range("E2").Value = date1 

Range("E2").NumberFormatLocal = "dd/mm/yyyy"
于 2014-04-09T09:33:34.680 回答
0

最后我不得不将单元格格式化为“TEXT”以保持正确的格式

于 2012-09-17T16:09:28.833 回答