将datetimestring转换为有效的date值和有效的时间值
此代码作为转换的无效date返回:
'2014年9月10日星期三上午06:53'
VBA IsDate
函数用于检查expression式是否为Date
或expression式可以转换为有效的Date
或Time
。 该函数返回true
或false
。
我怎样才能使date有效?
'----------------------------------------- Dim x As Integer x = ActiveCell.Row '----------------------------------------- Dim vDate As Variant vDate = "Wednesday, September 10, 2014 6:53 AM" MsgBox vDate MsgBox IsDate(vDate) 'retuns false '----------------------------------------- Dim fDAT As String fDAT = Left(vDate, Len(vDate) - 7) MsgBox fDAT MsgBox IsDate(fDAT) 'retuns false '----------------------------------------- ''ActiveSheet.Range("a" & x).Value = fDAT
你会改变:
fDAT = Left(vDate, Len(vDate) - 7)
至:
fDAT = Mid(vDate, InStr(vDate, ",") + 2)
摆脱“星期三”,并尝试像这样的:
vDate = Format(vDate, "M/D/YYYY H:MM:SS AM/PM") xDate = IsDate(vDate)
为了得到正确性,你可以使用类似的东西:
Sub blabla() Dim vDate As Variant, xDate As Boolean vDate = "Wednesday, September 10, 2014 6:53 AM" xDate = IsDate(vDate) Or (IsDate(Mid(vDate, InStr(vDate, ",") + 1)) And Left(vDate, InStr(vDate, ",") - 1) = Format(Mid(vDate, InStr(vDate, ",") + 1), "dddd")) End Sub
如果不是正确的工作日,这也是错误的;)
要获得有用的价值,你可以使用像这样的东西:
If Not IsDate(vDate) And IsDate(Mid(vDate, InStr(vDate, ",") + 1)) Then vDate = Mid(vDate, InStr(vDate, ",") + 1)