【EXCEL VBA】セルの値が文字列かどうか判定したい

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

TypeName関数で解決する

セルのあたりをRange(”XX”).Valueで取得し、TypeName関数の渡すと型が返却されます。戻り値が「String」の場合は文字列ということになります。

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

サンプルプログラムを確認する(コピペOK)

セルに以下の値が入力されている際、TypeNameの返却値を出力してみました。注意点としては、セルに入力された数値を判定するとDoubleとなる点です。

Option Explicit

Sub sample()
    
    Debug.Print TypeName(Range("A1").Value)     ' String
    Debug.Print TypeName(Range("A2").Value)     ' Double ★要注意
    Debug.Print TypeName(Range("A3").Value)     ' Date
    
    Debug.Print TypeName(100)                   ' Integer
    Debug.Print TypeName(100.1)                 ' Double
    Debug.Print TypeName(Null)                  ' Null

End Sub