将datetimestring转换为有效的date值和有效的时间值

此代码作为转换的无效date返回:

'2014年9月10日星期三上午06:53'

VBA IsDate函数用于检查expression式是否为Date或expression式可以转换为有效的DateTime 。 该函数返回truefalse

我怎样才能使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)