VBA如何在变量

时间:2017-03-15 12:40:32

标签: vba datetime timestamp

我正在处理日志或历史文件。在第1列中有时间戳,如2017年3月1日22:08:01 2017年。 我正在将工作表的全部内容复制到2d变量数组中以进行进一步处理。现在我想将此时间戳存储为日期或日期时间以进一步处理它。

但如果我这样做

dim dTimeStamp as date

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

它给了我typemismatch错误。

有没有办法将时间戳值存储为日期或日期时间? 请建议。

1 个答案:

答案 0 :(得分:1)

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

从即时窗口

?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