Excel VBAのif制御文で「対象のデータが文字列かどうか」条件を判定する方法
Excel VBAで、条件文で対象とするデータが文字列かどうか判定する際は、VarType関数を使用します。
ソースコード
Sub test()
Dim i As string
If VarType(i) = 8 Then
Msgbox "対象のデータは文字列型です"
else
Msgbox "対象のデータは文字列型ではありません"
End If
End Sub
上記では、vba内で文字列型の変数iを宣言していますが、もちろんワークシートのセルを「Activesheet.value」のように代入して、ダイレクトに条件判定することも可能です。
VarType関数で判定したデータ型は下記のルールに従って返却値を吐き出します。
定数 | 値 | 内容 |
---|---|---|
vbEmpty | 0 | Empty 値 (未初期化) |
vbNull | 1 | Null 値 (無効な値) |
vbInteger | 2 | 整数型 |
vbLong | 3 | 長整数型 (Long) |
vbSingle | 4 | 単精度浮動小数点数型 (Single) |
vbDouble | 5 | 倍精度浮動小数点数型 (Double) |
vbCurrency | 6 | 通貨型 (Currency) |
vbDate | 7 | 日付型 (Date) |
vbString | 8 | 文字列型 |
vbObject | 9 | オートメーション オブジェクト |
vbError | 10 | エラー型 |
vbBoolean | 11 | ブール型 (Boolean) |
vbVariant | 12 | バリアント型 (Variant) (バリアント型配列にのみ使用) |
vbDataObject | 13 | 非オートメーション オブジェクト |
vbByte | 17 | バイト型 |
vbArray | 8192 | 配列 (Array) |
文字列型に限らず、「Excel VBAでデータの型を調べたい時はVarType関数を使う」と覚えておけばOKです!