【发布时间】:2013-12-23 06:29:08
【问题描述】:
我发现excel中的日期格式有问题,显示格式与vba中的numberformat不一样
我已经为这个案例创建了一个测试。
Regional Setting for Short Date: MM/dd/yyyy
模块:
Function RetrieveNumberFormat() As String
Dim rng As Range
Set rng = Application.Caller
RetrieveNumberFormat = rng.NumberFormat
Set rng = Nothing
End Function
Function SetDate() As String
Dim rng As Range
Set rng = Application.Caller
SetDate = Format(Now, rng.NumberFormat)
Set rng = Nothing
End Function
在 Excel 中
Col A (Date w default format) | Col B (MM/dd/yyyy) | Col C (dd-mmm-yyyy) | Col D (dd/mm/yyyy) | Col E ([$-404]mm/dd/yyyy)
=Now() | =Now() | =Now() | =Now() | =Now()
=RetrieveNumberFormat() | =RetrieveNumberFormat() | =RetrieveNumberFormat() | =RetrieveNumberFormat() | =RetrieveNumberFormat()
=SetDate() | =SetDate() | =SetDate() | =SetDate() | =SetDate()
默认格式的日期(Col A):
结果:
我可以知道为什么 Excel 将 System Date Format MM/dd/yyyy 更改为 m/d/yyyy,有没有解决方法?
【问题讨论】:
-
Excel VBA date formats 的可能副本。看看this answer,它解释了你正在处理的一些事情。
-
感谢您的回答,但我认为这与我的情况有点不同,当我使用日期格式开始时,excel 似乎会将数字格式保存为
m/d/yyyy(美国语言环境的默认格式)*,所以我无法区分实际格式还是系统格式。但是,它可能会给我一种方法来解决这个问题。 -
我的这个问题和答案可能会有所帮助:stackoverflow.com/q/9839676/973283