更新日:、 作成日:
VBA VarType 関数:型を示す値を取得する
はじめに
Excel VBA マクロの VarType 関数から型を示す値を取得する方法を紹介します。
VarType 関数は、指定した変数のデータ型を示す数値を返します。
100 なら 2 を返します。
文字列なら 8 を返します。
Variant 型の配列なら 8204 を返します。
Variant 型に代入されている型を判定したいときに使用します。
型情報を型名の文字列で取得するには「TypeName 関数」を使用します。
VarType 関数の引数と戻り値
VarType(値)
値の型を示す数値を取得します。
引数「値」 | 変数や値を指定します。 |
戻り値の型 | 数値型 (Integer) |
引数「値」と戻り値の例
値 | 戻り値 | 定数 |
Empty | 0 | vbEmpty |
Null | 1 | vbNull |
100 | 2 | vbInteger |
50000 | 3 | vbLong |
CSng(1.5) | 4 | vbSingle |
1.5 | 5 | vbDouble |
CCur(100) | 6 | vbCurrency |
#12/31/2000# | 7 | vbDate |
"Tips" | 8 | vbString |
Nothing | 9 | vbObject |
CVErr(2042) | 10 | vbError |
True | 11 | vbBoolean |
Variant の配列 | 12 | vbVariant |
CDec(100) | 14 | vbDecimal |
CByte(1) | 17 | vbByte |
CLngLng(100) | 20 | vbLongLong、エクセルのバージョンが 64 ビットのときのみ使用可 |
配列型 | 8192 | vbArray |
配列を指定すると 型の値 + 配列の値 の合計を返します。
値 | 戻り値 | 定数 |
Integer の配列 | 8194 (2 + 8192) | vbInteger + vbArray |
String の配列 | 8200 (8 + 8192) | vbString + vbArray |
Variant の配列 | 8204 (12 + 8192) | vbVariant + vbArray |
スポンサーリンク
解説
引数「値」の型に対応する値 (Integer 型なら 2) を返します。戻り値はすべて VbVarType 列挙型として定義されています。
引数「値」が配列なら、その配列の型の値 (vbInteger など) に配列の値 (vbArray) を加えた値を返します。
Variant 型や Object 型のときは、それに代入されている型の値を返します。
Variant 型の配列のときは 8204 (vbVariant + vbArray) を返します。
Object 型の配列のときは 8201 (vbObject + vbArray) を返します。
引数「値」が構造体 (Type) なら「エラー パブリック オブジェクト モジュールで定義されたユーザー定義型に限り、変数に割り当てることができ、実行時バインディングの関数に渡すことができます。」が発生します。
型情報を型名の文字列で取得するには「TypeName 関数」を使用します。
使用例
VarType 関数の使用例を紹介します。
型を示す値を取得する
型を示す値を取得します。
Dim v As Variant
Dim i As Integer
v = 100
i = VarType(v)
Debug.Print(i) ' 2 (vbInteger)
v = 1.5
i = VarType(v)
Debug.Print(i) ' 5 (vbDouble)
v = Now
i = VarType(v)
Debug.Print(i) ' 7 (vbDate)
v = "Tips"
i = VarType(v)
Debug.Print(i) ' 8 (vbString)
v = CVErr(2042)
i = VarType(v)
Debug.Print(i) ' 10 (vbError)
v = True
i = VarType(v)
Debug.Print(i) ' 11 (vbBoolean)
Dim vEmpty As Variant
i = VarType(vEmpty)
Debug.Print(i) ' 0 (vbEmpty)
Dim o As Object
i = VarType(o)
Debug.Print(i) ' 9 (vbObject)
Set o = Worksheets(1)
i = VarType(o)
Debug.Print(i) ' 9 (vbObject)
v = Array(1, 2, 3)
i = VarType(v)
Debug.Print(i) ' 8204 (12 + 8192、vbVariant + vbArray)
Dim ints(10) As Integer
i = VarType(ints)
Debug.Print(i) ' 8194 (2 + 8192、vbInteger + vbArray)
Dim vs(10) As Variant
vs(0) = 10
i = VarType(vs)
Debug.Print(i) ' 8204 (12 + 8192、vbVariant + vbArray)