Excel 2007 の特定のセルに対して VBA で変更イベントを開発しています。これらのセルに入力された 2 つの異なる形式の日付 (時刻付き) を 1 つの形式 (アメリカ式) に変換したいと考えています。
入力された日付が2つの目的の形式のいずれかであるかどうかを確認するコードは次のとおりです。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)
ます。エラーが CDate によるものであることを確認するために、上の "If" のような Format メソッドを削除しました。
誰でもこれについてアドバイスできますか?CDate は DD-MMM-YYYY (例: 01-Jan-2013) 形式を認識しないのでしょうか? もしそうなら、誰かが回避策を提案できますか?
ターゲット形式は MM/DD/YYYY HH:MM です。
よろしくお願いいたします。
マチェイ
編集:
outputDate は日付形式です!