構文
IsDate(Expression) As Boolean
Expression・・・ 日付として評価する文字列
戻り値 ・・・・・Boolean型 日付データならTrue/日付データ以外はFalse
戻り値 ・・・・・Boolean型 日付データならTrue/日付データ以外はFalse
Expressionに指定した式が日付型かどうか判別します。
(日付データ以外はFalseとなります)
(日付データ以外はFalseとなります)
IsDate関数のサンプルコード
Public Sub sample_isDate() '■True よくあるパターン Debug.Print IsDate("2021/1/21") 'True※yyyy/m/d Debug.Print IsDate("2021/01/21") 'True※yyyy/mm/dd Debug.Print IsDate("令和3年01月21日") 'True※元号 Debug.Print IsDate("R3/1/21") 'True※元号略式 Debug.Print IsDate("21/1/21") 'True※yy/m/d Debug.Print IsDate("令和03/01/21") 'True Debug.Print IsDate("2021-1-21") 'True※ハイフンあり '■False yymmddの6桁 or yyyymmddの8桁数字は不可 Debug.Print IsDate("210121") 'False Debug.Print IsDate("20210121") 'False ’■yyyymmddの8桁数字はFormat関数で変換すればOK Debug.Print IsDate(Format("20210121", "####/##/##"))'True '■False yyyy.mm.ddのドット区切りは不可 Debug.Print IsDate("2021.1.21") 'False '■False 年号だけなどの日付の一部は不可。 Debug.Print IsDate("2021") 'False Debug.Print IsDate("R03") 'False Debug.Print IsDate("令和3年") 'False '■True 年号はなくても日付として判断 Debug.Print IsDate("01/01") 'True '■True 英語形式でも日付として判断 Debug.Print IsDate("January,21,2021") 'True Debug.Print IsDate("2021/01/21 12:00:00") 'True※日付+時刻 Debug.Print IsDate("12:00:00") 'True※時刻 Debug.Print IsDate("12時") 'True※時刻 End Sub
注意点
- エクセルでは日付や時刻はシリアル値で管理していますが、シリアル値以外もTrueの場合があります。
例)数字が全角文字の場合 isDate(“令和3年1月21日”)はTrueです。 - 逆に日本人が見たら日付データと判断できる文字が、Falseの場合があります。
例)数字が漢字の場合 isDate(“令和三年一月二十一日”)はFalseです。 - シリアル値かどうかを判断する場合は、isNumeric関数を使用しましょう。
関連記事
文字列を日付データに変換する【CDate関数】【ExcelVBA】
年/月/日から日付データを取得する【DateSerial関数】【ExcelVBA】
西暦→和暦変換-和暦→西暦変換【DATEVALUE関数】【ExcelVBA】
【VBA一覧】西暦、和暦変換のエクセル年号一覧
コメント