VarType関数:変数のデータ型を調べる

VarType 関数は Excel VBA で用意されている関数の一つで、引数に指定した変数のデータ型を調べ、データ型毎に定義されている数値を取得します。ここでは Excel VBA における VarType 関数の使い方について解説します。

※ 変数のデータ型の名前を表す文字列を取得する場合は TypeName 関数を使用します。詳しくは「TypeName関数:変数のデータ型の名前を取得する/a>」を参照されてください。

(Last modified: )

VarType関数の定義と使い方

VarType 関数は引数に指定した変数のデータ型を調べ、データ型毎に定義されている数値を取得します。

VarType(varname)

引数には変数を指定します。データ型毎にどのような数値が戻り値として返されるのかは次のようになっています。

定数説明
vbEmpty0空 (未初期化)
vbNull1Null (有効なデータではない)
vbInteger2整数型 Integer
vbLong3長整数型 Long
vbSingle4単精度浮動小数点数型 Single
vbDouble5倍精度浮動小数点数型 Double
vbCurrency6通貨型 Currency
vbDate7日付型 Date
vbString8文字列型 String
vbObject9オブジェクト Object
vbError10エラー値
vbBoolean11ブール型 Boolean
vbVariant12バリアント型 Variant
vbDataObject13データ アクセス オブジェクト
vbDecimal1410 進数型
vbByte17バイト型 Byte
vbLongLong20LongLong型の整数 (64 ビットプラットフォームでのみ有効)
vbUserDefinedType36ユーザー定義型を含むバリアント
vbArray8192配列

次の例を見てください。

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関数の定義と使い方(1)

このプログラムを実行すると VarType 関数を使って色々なデータ型の変数のデータ型を調べ、取得したデータ型を表す数値をイミディエイトウィンドウに表示します。

VarType関数の定義と使い方(2)

-- --

Excel VBA における VarType 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。