VarType関数:変数のデータ型を調べる
VarType 関数は Excel VBA で用意されている関数の一つで、引数に指定した変数のデータ型を調べ、データ型毎に定義されている数値を取得します。ここでは Excel VBA における VarType 関数の使い方について解説します。
※ 変数のデータ型の名前を表す文字列を取得する場合は TypeName 関数を使用します。詳しくは「TypeName関数:変数のデータ型の名前を取得する/a>」を参照されてください。
(Last modified: )
VarType関数の定義と使い方
VarType 関数は引数に指定した変数のデータ型を調べ、データ型毎に定義されている数値を取得します。
引数には変数を指定します。データ型毎にどのような数値が戻り値として返されるのかは次のようになっています。
| 定数 | 値 | 説明 |
|---|---|---|
| vbEmpty | 0 | 空 (未初期化) |
| vbNull | 1 | Null (有効なデータではない) |
| vbInteger | 2 | 整数型 Integer |
| vbLong | 3 | 長整数型 Long |
| vbSingle | 4 | 単精度浮動小数点数型 Single |
| vbDouble | 5 | 倍精度浮動小数点数型 Double |
| vbCurrency | 6 | 通貨型 Currency |
| vbDate | 7 | 日付型 Date |
| vbString | 8 | 文字列型 String |
| vbObject | 9 | オブジェクト Object |
| vbError | 10 | エラー値 |
| vbBoolean | 11 | ブール型 Boolean |
| vbVariant | 12 | バリアント型 Variant |
| vbDataObject | 13 | データ アクセス オブジェクト |
| vbDecimal | 14 | 10 進数型 |
| vbByte | 17 | バイト型 Byte |
| vbLongLong | 20 | LongLong型の整数 (64 ビットプラットフォームでのみ有効) |
| vbUserDefinedType | 36 | ユーザー定義型を含むバリアント |
| vbArray | 8192 | 配列 |
次の例を見てください。
Dim userold As Integer Dim username As String userold = 24 username = "山田太郎" Debug.Print VarType(userold) '2 Debug.Print VarType(username) '8
VarType 関数の引数に整数型の変数と文字列型の変数を指定すると、それぞれのデータ型を表す 2 と 8 という数値を取得してイミディエイトウィンドウに表示されます。
バリアント型について
バリアント型の変数を VarType 関数の引数に指定した場合、バリアント型を表す数値である 12 が返されるのではなく変数に実際に格納されている値のデータ型を表す数値が返されます。
次の例を見てください。
Dim userold As Variant Dim username As Variant userold = 24 username = "山田太郎" Debug.Print VarType(userold) '2 Debug.Print VarType(username) '8
バリアント型の変数に数値や文字列を代入したあとで変数のデータ型を調べてみると、バリアント型の 12 ではなく、変数に格納されている値のデータ型である 2 と 8 が返されていることが確認できます。バリアント型の 12 はこのあとで解説する配列の場合にだけ使用されるので注意してください。
配列について
配列の変数を VarType 関数の引数に指定した場合、配列を表す数値である 8192 と配列に格納されている値のデータ型を表す数値が加算されたものが返されます。
次の例を見てください。
Dim username(0) As String Dim other(0) As Variant username(0) = "山田太郎" other(0) = 25 Debug.Print VarType(username) '8200 Debug.Print VarType(other) '8204
文字列型の配列の場合、配列を表す 8192 と文字列型を表す 8 を加算して 8200 となります。バリアント型の配列の場合、配列を表す 8192 とバリアント型を表す 12 を加算して 8204 となります。配列の場合はバリアント型の要素にどんな値が格納されているのではなくバリアント型を表す 12 が使用される点に注意してください。
それでは簡単なサンプルを作成して試してみます。
Option Explicit
Sub VarType関数()
Dim i As Integer
Dim s As Single
Dim c As Currency
Dim d As Date
Dim w As Worksheet
i = 10
s = 3.145
c = 52455600
d = #2/15/2023#
Set w = Worksheets(1)
Debug.Print VarType(i)
Debug.Print VarType(s)
Debug.Print VarType(c)
Debug.Print VarType(d)
Debug.Print VarType(w)
End Sub
このプログラムを実行すると VarType 関数を使って色々なデータ型の変数のデータ型を調べ、取得したデータ型を表す数値をイミディエイトウィンドウに表示します。
-- --
Excel VBA における VarType 関数の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。