[VBA] VarType関数で変数のデータ型を調べます

VarType関数で変数のデータ型を調べます

 VarType関数引数に指定した値のデータ型を示す数値 を返します。たとえば次のようなマクロを書いてみましょう。

'[VBA] VarTypeで変数のデータ型を調べるマクロ-1

Sub Data_Type_1()

  Dim x As Double

  Debug.Print VarType(x)

End Sub

 変数 x を Double型で宣言しておいてから、それを VarType関数に入れてあります。このマクロを実行すると「 5 」という数字が表示されます。これは変数が Double型であることを示す変数の組込定数 (vbDouble) です。もうひとつ試してみましょう。

'[VBA] VarTypeで変数のデータ型を調べるマクロ-2

Sub Data_Type_2()

  Dim mystr As String

  Debug.Print VarType(mystr)

End Sub

 今度は String型変数 mystr を宣言してあるので、String型に対応する組込定数「 8 」が返ってきます。
 
 配列に対応する数字は 8192 ですけど、実際にこの値がそのまま返されることはありません。必ず要素のデータ型を示す数値に加算した値を返します。たとえば次のようなコードを書いたとします。

'[VBA] VarTypeで配列のデータ型を調べるマクロ

Sub Data_Type_3()

  Dim x(2) As Integer

  x(1) = 1
  x(2) = 2

  Debug.Print VarType(x)

End Sub

 このマクロでは配列要素が Integer型で宣言されています。Integer型を表す数値は 2 なので、配列を示す数値 8192 に 2 を加えて 8194 が返ってきます。
 
 VarType関数が使われるのは「このデータの型がよくわからないな~」てときです。たとえば Single型と Double型の数値を足したとき、その戻り値のデータ型がどうなるのかを調べてみましょう。

'[VBA] VarTypeでSingle+Doubleのデータ型を調べるマクロ

Sub Data_Type_4()

  Dim x As Single
  Dim y As Double
  Dim z As Variant

  z = x + y

  Debug.Print VarType(z)

End Sub

 マクロを実行すると「 5 」という値が返ってくるので、Single型数値と Double型数値を加えると Double型となることがわかります。

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)