这是我正在做的事情: 1.在控制面板中,我按如下方式设置系统日期格式:dd / MM / yyyy 2.我创建了以下简单的宏:
Sub hello()
ActiveSheet.Cells(1, 1) = "10/01/2014"
End Sub
每当日期小于12时,它将日期转换为美国格式(MM / dd / yyyy),当日期大于12时,它无法转换它并正确地将日期写入单元格,但作为文本。 我在尝试从VSTO写日期时首先发现了这一点,但随后将其缩小到任何从代码甚至宏编写日期到单元格的地方。 这是一个Excel错误还是我做错了什么?我使用的是Excel 2013,但我相信这个问题也存在于所有其他版本中......
答案 0 :(得分:1)
VBA认为所有日期文字都采用美国格式,除非文字不可能是有效的美国格式日期。如果您使用"10/Jan/2014"
(或#10/Jan/2014#
; #
是日期文字标记),VBA将回退到dd / MMM / yyyy,因为它不能是其他任何东西。
如果您需要VBA了解您的本地日期格式,请使用:
Sub hello()
ActiveSheet.Cells(1, 1) = DateValue("10/01/2014")
End Sub
... since(如VBA帮助文件中所述):
DateValue
根据以下内容识别月,日和年的订单 您为系统指定的短日期格式。 DateValue也 识别包含月份名称的明确日期,或者长 或缩写形式。
因此,只要您的PC设置了正确的区域设置,DateValue()
就应该了解您的首选日期格式。