VBA 中日期格式的差异

Differences between date formatting in VBA

我想达到 A1 中看到的结果。为什么第 3 行不会输出与第 1 和第 2 行相同的结果,即使格式相同 - yyyy-mm-dd hh:mm:ss?

这与区域设置有什么关系吗?

1   Range("A1").Value2 = Now
2   Range("A1").NumberFormat = "yyyy-mm-dd hh:mm:ss"
3   Range("B1").Value2 = Format(Now, "yyyy-mm-dd hh:mm:ss")

为什么不在之前或之后设置带有范围的单元格格式?

示例:

Range("A1:Z1").NumberFormat = "yyyy-mm-dd hh:mm:ss"
Range("A1").Value2 = Now
Range("B1").Value2 = Now

那是因为:

A1:您设置了一个 日期 值并应用了特定的显示格式。

B1:您将日期值格式化为 Text,将其设置为值,但单元格未应用特定格式,因此 Excel 看到文本date 作为日期值并将其转换为真正的日期值,该值以您的默认(德语?)日期格式显示。

要强制将文本日期读取为文本,您可以在其前面加上引号:

Range("A1").Value2 = Now
Range("A1").NumberFormat = "yyyy-mm-dd hh:mm:ss"
Range("B1").Value2 = Format(Now, "yyyy-mm-dd hh:mm:ss")
Range("C1").Value2 = Format(Now, "\'yyyy-mm-dd hh:mm:ss")

输出(丹麦语本地化):

请注意,C1 是 text(左对齐)。