【EXCEL VBA】セルの値が日付かどうか判定したい

今回はセルに入力されている値が日付かどうかを判定する方法について紹介します。実は非常に簡単でTypeName関数を使うだけです。

TypeName関数の戻り値一覧は公式にまとめられています。

サンプルプログラム

セルに以下の値が入力されている際、TypeNameの返却値を出力してみました。 不思議なのが時間表示はDouble型と判定されますが、”yyyy/mm/dd hh:mm:ss”形式は日付型と判定されてしまうことです。ここは要注点かもしれません。

Option Explicit

Sub sample()
    
    Debug.Print TypeName(Range("A1").Value)         ' Date
    Debug.Print TypeName(Range("A2").Value)         ' Date
    Debug.Print TypeName(Range("A3").Value)         ' Double
    Debug.Print TypeName(Range("A4").Value)         ' Date
    Debug.Print TypeName("1/14/2022")               ' String
    Debug.Print TypeName(#1/14/2022#)               ' Date
    Debug.Print TypeName("10:11:12 AM")             ' String
    Debug.Print TypeName(#10:11:12 AM#)             ' Date
    Debug.Print TypeName("1/14/2022 10:11:12 AM")   ' String
    Debug.Print TypeName(#1/14/2022 10:11:12 AM#)   ' Date

End Sub