将string转换为dateVBA

我有一个date和时间的string,这种格式“DD.MM.YYYY HH:毫米”,我想转换为一个date(无论格式)。

我正在使用这个testing代码,我找不到它为什么不起作用:

Dim Data1 As String, Data2 As Date Data1 = "01.01.2015 01:01" Data2 = CDate(Data1) 

在使用CDate转换之前,尝试将string转换为更接近常规EN-US格式的string。

 Dim Data1 As String, Data2 As Date Data1 = Replace("01.01.2015 01:01", Chr(46), Chr(47)) Data2 = CDate(Data1) Debug.Print Data2 

如果提供的样本数据从MDY和DMY格式中产生模棱两可的结果通常不是一个好主意。 这可能是VBA中的一个问题。 提供明确的一个或另一个数据。

对于含有不明确的DMY / MDY数据(如"02.01.2015 01:01"string,这是一个更好的方法。

 Dim Data1 As String, Data2 As Date, vDATE As Variant, vTIME As Variant Data1 = "02.01.2015 01:01" vTIME = Split(Data1, Chr(32)) vDATE = Split(vTIME(0), Chr(46)) Data2 = DateSerial(vDATE(2), vDATE(1), vDATE(0)) + TimeValue(vTIME(1)) Debug.Print Data2 

VBA使用第一种方法进行“最佳猜测”,并且在2015年2月1日之前出现错误。 第二种方法更为明确,并且达到了2015年1月2日的正确答案(假设已知的DMYdate格式)。 总之,约会并不总是足够的; 确保它是正确的date。