date分隔符在64位Excel VBA中无法正常工作

我在安装了64位Excel 2016的Windows 10 x64机器上。

我有date的麻烦,因为他们不正常工作,我有区域设置设置正确,但VBA似乎不正确认识. 作为date分隔符,它只使用- 。 当我将它与安装了32位Excel 2010的Windows 7 x64机器进行比较时,它的工作方式应该是这样。

在下面的图片中,您可以看到不正确的行为:

VBA行为

基本上,我打电话给:

 ? cdate("01.08.2016") 15. 06. 4862 ? cdate("01-08-2016") 1. 08. 2016 ? Application.International(xlDateSeparator) . ? Application.International(xlTimeSeparator) : 

我不知道为什么这不工作,因为它的Windows的区域设置正确设置..任何想法?

我猜它正在被这个混淆. 并试图使用它作为千位分隔符(通过删除它):

 Debug.Print Format$(CDate(1082016), "dd.mm.yyyy") 'prints 15.06.4862 

Excel和VBA在date和本地化方面确实很糟糕。 我会build议一个这样的解决方法:

 Dim test As String Dim parts() As String test = "01.08.2016" parts = Split(test, Application.International(xlDateSeparator)) Debug.Print DateSerial(CInt(parts(2)), CInt(parts(0)), CInt(parts(1))) 

find一个解决scheme..我不得不在地区设置更改短date:

 d.MM.yyyy 

之前的设置在短date掩码中有空格(如VincentG所述),如下所示:

 d. MM. yyyy 

这就是我现在的设置:

在这里输入图像说明