Excel VBA では、変数やセルの値がどのデータ型かを確認したい場合があります。このような状況で役立つのが、VarType 関数です。VarType 関数を使用すると、値のデータ型を簡単に取得できます。
VarType 関数の使い方と実務で役立つコード例を紹介します。
VarType 関数とは?
VarType 関数は、指定した値のデータ型を示す数値(定数)を返します。この数値を使用して、値が数値、文字列、日付、オブジェクトなど、どのデータ型かを判定できます。
【基本構文】
VarType(値)
値: データ型を調べたい値や変数。
VarType 関数が返す値一覧
以下は、VarType 関数が返すデータ型とその対応する定数です:
| 返り値 | 定数 | データ型 |
|---|---|---|
| 0 | vbEmpty | 未初期化状態 |
| 1 | vbNull | NULL (空) |
| 2 | vbInteger | 整数型 (Integer) |
| 3 | vbLong | 長整数型 (Long) |
| 4 | vbSingle | 単精度浮動小数点型 (Single) |
| 5 | vbDouble | 倍精度浮動小数点型 (Double) |
| 6 | vbCurrency | 通貨型 (Currency) |
| 7 | vbDate | 日付型 (Date) |
| 8 | vbString | 文字列型 (String) |
| 9 | vbObject | オブジェクト型 |
| 11 | vbBoolean | 真偽型 (Boolean) |
| 17 | vbByte | バイト型 (Byte) |
| 8192 | vbArray | 配列 |
値の型を判定して表示する
変数のデータ型を確認し、その型をメッセージボックスで表示します。
Sub CheckVarType()
Dim value As Variant
value = 123 ' 値を設定
Select Case VarType(value)
Case vbInteger
MsgBox "この値は整数型 (Integer) です。"
Case vbDouble
MsgBox "この値は倍精度浮動小数点型 (Double) です。"
Case vbString
MsgBox "この値は文字列型 (String) です。"
Case vbDate
MsgBox "この値は日付型 (Date) です。"
Case Else
MsgBox "この値の型は判定できません。"
End Select
End Sub
セルの値の型を調べる
セルに入力された値のデータ型を確認する例です。
Sub CheckCellVarType()
Dim cellValue As Variant
cellValue = Range("A1").Value ' セル A1 の値を取得
Select Case VarType(cellValue)
Case vbEmpty
MsgBox "セルは空です。"
Case vbInteger, vbLong, vbDouble
MsgBox "セルの値は数値です。"
Case vbString
MsgBox "セルの値は文字列です。"
Case vbDate
MsgBox "セルの値は日付です。"
Case Else
MsgBox "セルの値の型は不明です。"
End Select
End Sub
配列の型を調べる
VarType を使用すると、配列であるかどうかも判定できます。
【配列かどうかを判定する】
Sub CheckIfArray()
Dim arr() As Variant
Dim singleValue As Integer
arr = Array(1, 2, 3) ' 配列を設定
singleValue = 100 ' 単一の値を設定
If VarType(arr) And vbArray Then
MsgBox "この値は配列です。"
Else
MsgBox "この値は配列ではありません。"
End If
End Sub
解説
VarType(arr) And vbArrayを使用すると、配列であるかどうかを判定できます。
型による処理の分岐
値の型に応じて異なる処理を実行します。
【型ごとに異なる操作を実行】
Sub PerformActionBasedOnType()
Dim value As Variant
value = Range("B1").Value ' セル B1 の値を取得
Select Case VarType(value)
Case vbInteger, vbLong, vbDouble
Range("C1").Value = value * 2 ' 数値なら2倍
Case vbString
Range("C1").Value = value & " - Processed" ' 文字列なら文字を追加
Case vbDate
Range("C1").Value = value + 7 ' 日付なら7日後
Case Else
MsgBox "この型はサポートされていません。"
End Select
End Sub
VarType関数の使用の注意点
- 型が複数該当する場合
VarTypeは複数の型が含まれる場合(例えば、配列かつ文字列型)に対応するため、ビット演算を使用して特定の型を確認します。 - Variant型との関係
すべての型はVariantに変換できますが、Variant自体の型を調べる際にVarTypeが役立ちます。 - オブジェクト型の判定
オブジェクト型(vbObject)の場合、その具体的な型を確認するにはTypeNameを使用する必要があります。【VBA】オブジェクトの存在を確認する方法
まとめ
Excel VBA の VarType 関数は、データ型を簡単に判定するための便利なツールです。以下のポイントを押さえて活用しましょう:
- 基本的なデータ型を判定可能: 数値型、文字列型、日付型など。
- 配列や未初期化の状態を確認: 配列や空の値も判定できる。
- 実務での応用例: セル値の型判定、動的処理、エラーチェック。