VBA 中日期格式的区别
Posted
技术标签:
【中文标题】VBA 中日期格式的区别【英文标题】:Differences between date formatting in VBA 【发布时间】:2022-01-06 12:27:19 【问题描述】:我想实现 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")
【问题讨论】:
我不知道为什么(我猜 excel 正在努力为您提供智能)但是如果您有日期数据,请将其保留为日期并通过NumberFormat
修改演示文稿
【参考方案1】:
那是因为:
A1:您设置了一个 Date 值并应用特定格式进行显示。
B1:您将日期值格式化为 Text,将其设置为值,但单元格未应用特定格式,因此 Excel 将文本日期视为日期值并将其转换为一个真正的日期值,以您的默认(德语?)日期格式显示。
要强制将文本日期读取为文本,您可以在其前面加上引号:
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 是文本(左对齐)。
【讨论】:
我明白了。这回答了这个问题。谢谢@Gustav【参考方案2】:为什么不使用 Range 设置单元格格式,之前或之后?
例子:
Range("A1:Z1").NumberFormat = "yyyy-mm-dd hh:mm:ss"
Range("A1").Value2 = Now
Range("B1").Value2 = Now
【讨论】:
以上是关于VBA 中日期格式的区别的主要内容,如果未能解决你的问题,请参考以下文章