【Excel VBA】 変数のデータ型を調べるには?

こちらの記事では、VBAで変数のデータ型を調べる方法をご紹介しています。

VBAで利用する変数は最初にデータ型を宣言することなく利用する事もできます。

これは一見便利なように思えますが、実は意図しないデータ型としてデータが扱われることにより、思わぬ不具合が潜んでしまうリスクを伴います。

 

また、変数は予めデータ型を宣言して利用することで、データ型が異なる内容を変数に代入しようとした場合にエラーで通知をしてくれます。このように既知のエラーとすることで早期解決につながります。

 

しかしVBAではデータ型を宣言しても、データ型が不明になってしまうことがあります。

それは、Variant型というデータ型で宣言した場合です。

これは何でも代入できてしまうデータ型で、代入されたデータに合わせてデータ型が変わってしまうデータ型となっています。よくオブジェクトを代入する場合に利用されます。

Variant型を利用した場合、今一体どんなデータ型なのか?調べない限りわかりません。

 

sponsor link

VBA でデータ型を調べる方法

VBAで変数のデータ型を調べるには VarType 関数を利用します。

 

VarType 構文

VarType(varname)

引数varnameには、データ型を調べたい変数を指定します。

 

戻り値

次のいずれかの定数または定数の合計が返されます。

vbEmpty0空 (未初期化)
vbNull1Null (有効なデータではない)
vbInteger2Integer型
vbLong3Long型(長整数)
vbSingle4Single型(単精度浮動小数点数)
vbDouble5Double型(倍精度浮動小数点数)
vbCurrency6通貨型
vbDate7日付型
vbString8String型
vbObject9Object
vbError10エラー値
vbBoolean11Boolean型
vbVariant12Variant型 (バリアントの 配列でのみ使用される)
vbDataObject13データ アクセス オブジェクト
vbDecimal14Decimal型(10進値)
vbByte17Byte型
vbLongLong20LongPtr型(64 ビット プラットフォームでのみ有効)
vbUserDefinedType36ユーザー定義型を含むバリアント
vbArray8192配列 (※注意 この関数によって返される場合は常に別の定数にが加算されます)
8192という値がそのまま返却されることはありません。
Null の配列の場合 8183 を返却 (1 + 8192)
Integer型 の配列の場合 8194 を返却 (2 + 8192)
Long型 の配列の場合 8195 を返却 (3 + 8192)
Single型 の配列の場合 8196 を返却 (4 + 8192)
Double型 の配列の場合 8197 を返却 (5 + 8192)
Date型 の配列の場合 8199 を返却 (7 + 8192)
String型 の配列の場合 8200 を返却 (8 + 8192)
Object型 の配列の場合 8201 を返却 (9 + 8192)
Boolean型 の配列の場合 8203 を返却 (11 + 8192)
Variant型 の配列の場合 8204 を返却 (12 + 8192)

VarType関数の使用例

下記はVBAでデータ型を求める時のVarType関数の使用例です。

Public Function Test()
    
    Dim varTest As Variant
    
    varTest = Null
    Debug.Print VarType(varTest)
    '戻り値は 1 となる。

    varTest = 1
    Debug.Print VarType(varTest)
    '戻り値は 2 となる。
    
    varTest = "a"
    Debug.Print VarType(varTest)
    '戻り値は 8 となる。
    
    Set varTest = ThisWorkbook.ActiveSheet
    Debug.Print VarType(varTest)
    '戻り値は 9 となる。

End Function

 

まとめ

VBAで変数のデータ型を調べるにはVarType関数を利用して、戻り値の数値でデータ型を判断する。

タイトルとURLをコピーしました