日期分隔符在64位Excel VBA

时间:2016-08-04 14:29:59

标签: excel vba excel-vba

我使用的是安装了64位Excel 2016的Windows 10 x64计算机。

我在日期方面遇到问题,因为它们工作不正常,我已正确设置了区域设置,但VBA似乎没有正确识别.作为日期分隔符,它只使用-。当我将其与安装了32位Excel 2010的Windows 7 x64计算机进行比较时,它的工作方式应该如此。

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

VBA behavior

基本上,我在打电话:

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

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

2 个答案:

答案 0 :(得分:1)

我猜它被.弄糊涂了,并尝试将其用作千位分隔符(通过删除它):

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

Excel和VBA在日期和本地化方面非常糟糕。我建议这样的解决方法:

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)))

答案 1 :(得分:0)

找到解决方案..我必须将区域设置中的短日期更改为:

d.MM.yyyy

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

d. MM. yyyy

这就是我的设置现在的样子:

enter image description here