我想问一下,在VBA中是否有内置函数,它将根据指定的格式从字符串中解析日期对象。
例如:
dateString = "24-4-12"
VBADateFunc(dateString, "dd-m-yy")
返回一个日期对象,用提供的格式解释dateString字符串。
我会在这方面讨论你的想法。
谢谢
答案 0 :(得分:2)
你走了:
Public Sub TestMe()
Dim dtMyDate As Date
dtMyDate = Format("24-4-12", "dd-mm-yy")
Debug.Print dtMyDate
Debug.Print Format(dtMyDate, "yyyy")
Debug.Print Format(dtMyDate, "dd-mmm-yy")
'For Non-Europeans:
dtMyDate = Format(DateSerial(2012, 4, 24), "dd-mm-yy")
Debug.Print dtMyDate
Debug.Print Format(dtMyDate, "yyyy")
Debug.Print Format(dtMyDate, "dd-mmm-yy")
End Sub
从评论中 - 通常,日期是MS Excel和VBA中的长值。今天的日期可以在即时窗口中看到:
?clng(now)
42935
如果你想进一步使用42935值,你可能会这样:
?Format(42934,"dd-mm-yyyy")
注意:对于拥有ActiveWorkbook.Date1904 = False
的所有人来说,今天是42934。对于那些使用1904
开始日历的人,今天是42935-4*365-1
答案 1 :(得分:2)
我最终编写了自己的函数来扫描日期。抛弃错误处理:
Function ScanDate(s As String, Optional order As String = "DMY", Optional separator As String = "-") As Date
Dim parts() As String
parts = Split(s, separator)
Dim day As Long, month As Long, year As Long
day = parts(InStr(order, "D") - 1)
month = parts(InStr(order, "M") - 1)
year = parts(InStr(order, "Y") - 1)
ScanDate = DateSerial(year, month, day)
End Function