我開發在Excel 2007 我想轉換日期(與時間)進入這些細胞成一種格式(美國)的兩套不同格式的特定細胞VBA更改事件。Excel 2007中VBA CDATE方法接受的格式
這裏是我的代碼檢查,如果輸入的日期是在兩個期望的格式之一。 crmdate是ActiveCell的字符串值:
If RegexServiceManager.test(crmdate) Then
outputDate = Format(CDate(crmdate), "MM/dd/yyyy hh:mm")
Application.EnableEvents = False
ActiveCell.Value = outputDate
ActiveCell.NumberFormat = "MM/dd/yyyy hh:mm"
Application.EnableEvents = True
ElseIf RegexSiebel.test(crmdate) Then
outputDate = CDate(crmdate)
Application.EnableEvents = False
ActiveCell.Value = outputDate
ActiveCell.NumberFormat = "MM/dd/yyyy hh:mm"
Application.EnableEvents = True
Else
MsgBox "Inapropriate date and time format"
End If
RegexServiceManager檢查日期是在YYYY/MM/DD HH:MM:SS格式,並能正常工作。 RegexSiebel檢查日期是否爲int DD-MMM-YYYY HH:MM格式,這是麻煩開始的地方。
我得到outputDate = CDate(crmdate)
線「類型不匹配」的錯誤。我已經移除了格式方法,就像上面的「If」中的格式一樣,以確認錯誤來自CDate。
任何人都可以提供意見嗎?也許CDate不識別DD-MMM-YYYY(例如:01-Jan-2013)格式?如果有的話,任何人都可以提出解決方法?
目標格式是MM/DD/YYYY HH:MM。
謝謝&最好的問候,
馬切伊
編輯:
outputDate是日期格式的!
'CDATE()'會識別DD-MMM-YYYY HH:mm格式。試試cdate(format(now(),「dd-mmm-yyyy hh:mm」))'例如。 – markblandford 2013-04-04 15:20:48
你好creamyegg,謝謝你的提示。我想我找到了鼻子。我會將其作爲答案發布。 – 2013-04-05 09:20:52