VBA如何在变量中存储时间戳

VBA如何在变量中存储时间戳,vba,datetime,timestamp,Vba,Datetime,Timestamp,我正在处理日志或历史文件。在第1列中有类似于2017年3月1日星期三22:08:01东部标准时间的时间戳。 我正在将工作表的全部内容复制到2d variant数组中以进行进一步处理。现在我想将这个时间戳存储为date或datetime来进一步处理它 但如果我这样做了 dim dTimeStamp作为日期 在循环中,使用它存储column1的值 dTimeStamp=cdate(vbaseArray(I,1)) 它给了我一个类型不匹配的错误 有没有一种方法可以将时间戳值存储为date或dateti

我正在处理日志或历史文件。在第1列中有类似于2017年3月1日星期三22:08:01东部标准时间的时间戳。 我正在将工作表的全部内容复制到2d variant数组中以进行进一步处理。现在我想将这个时间戳存储为date或datetime来进一步处理它

但如果我这样做了

dim dTimeStamp作为日期

在循环中,使用它存储column1的值 dTimeStamp=cdate(vbaseArray(I,1))

它给了我一个类型不匹配的错误

有没有一种方法可以将时间戳值存储为date或datetime?
请建议。

您无法将该字符串自动转换为日期,因此必须对其进行解析。通常,
DateValue
CDate
更宽容一些

从即时窗口

?datevalue(mid("Wed Mar 01 22:08:01 EST 2017",5,15))
3/1/2017 
这将始终为您提供当前年份。它从一周中的某一天开始,然后停止

如果你需要这一年,或者你只是想变得更健壮,我会使用一个函数,比如

Function ConvertDate(ByVal sDate As String) As Date

    Dim vaSplit As Variant

    vaSplit = Split(sDate, Space(1))

    ConvertDate = DateValue(vaSplit(1) & Space(1) & vaSplit(2) & ", " & vaSplit(5)) + TimeValue(vaSplit(3))

End Function
从即时窗口

?convertdate("Wed Mar 01 22:08:01 EST 2017")
3/1/2017 10:08:01 PM 

Hi@jay-两件事:首先在
cdate(vbaseArray(I,1))
中,行索引中有一个“L”,不确定这是问题所在还是粘贴到此处时键入错误,但想指出它。。。接下来,如果您使用
Range.Value2
将范围读入数组,我相信Value2会删除日期格式。。。最后,我不确定“Wed Mar 01 22:08:01 EST 2017”格式是否可以使用cdate转换为日期-因此有2个选项:1)尝试
dateValue
或2)如果这不起作用,您可能需要编写自己的日期转换函数,将上述时间戳格式转换为日期,这不会太棘手-silkcodehi@SilkCode,谢谢您的快速回复。”L'是循环中的行索引。我没有将整个代码粘贴到这里。我也尝试了datevalue,但它给了我相同的类型不匹配错误。我需要考虑编写自己的转换函数。啊,明白了,有道理。试试其他两个,让我知道是否有效。