当系统设置为欧洲日期格式时,Excel会将我的日期搞乱
以下是我正在做的: 1.在控制面板中,我设置系统日期格式如下:dd/MM/yyyy 2.我创建以下简单宏:当系统设置为欧洲日期格式时,Excel会将我的日期搞乱,excel,vba,Excel,Vba,以下是我正在做的: 1.在控制面板中,我设置系统日期格式如下:dd/MM/yyyy 2.我创建以下简单宏: Sub hello() ActiveSheet.Cells(1, 1) = "10/01/2014" End Sub 我运行它,并在单元格中获得以下日期(1,1):2014年10月1日 当日期小于12时,它会将日期转换为美式格式(MM/dd/yyyy),当日期大于12时,它无法将其转换并将日期正确地写入单元格中,而是作为文本。 我在尝试从VSTO写入日期时首先发现了这一点,但后来
Sub hello()
ActiveSheet.Cells(1, 1) = "10/01/2014"
End Sub
这是Excel的错误还是我做错了什么?我使用的是Excel 2013,但我相信在所有其他版本中也存在此问题…VBA认为所有日期文字都是美国格式的,除非文字不可能是有效的美国格式的日期。如果使用
“2014年1月10日”
(或#2014年1月10日#
,#
是日期文字标记),VBA将返回到dd/MMM/yyyyy,因为它不能是其他任何东西
如果需要VBA来理解本地日期格式,请使用:
Sub hello()
ActiveSheet.Cells(1, 1) = DateValue("10/01/2014")
End Sub
…自(如VBA帮助文件中所述):
DateValue
根据
为系统指定的短日期格式。日期值也
识别包含月份名称的明确日期,无论是长日期还是短日期
或缩写形式
因此,只要您的电脑设置了正确的区域设置,
DateValue()
就应该理解您首选的日期格式。旁白:叹气YYYY-MM-DD
是一种标准表示法,48年来避免了MM/DD或DD/MM混淆,谢谢!你让我走对了路!谢谢,这解决了VBA!然而,我的问题不在VBA中,而是在VSTO中,我使用range.set_Values(array)方法将日期写入一系列单元格。有没有一种方法可以在C#代码中使用类似于DateValue()的东西?请查看DateTime构造函数和Parse
或ParseExact
。