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

【VBA】VarType関数

 VBA の 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

 Data_Type_3() では配列要素が 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

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

コメント

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