VBAで自動化 VBA一覧 変換・データ型 配列・データ操作

【VBA】VarType 関数を使ってデータ型を調べる方法

Excel VBA では、変数やセルの値がどのデータ型かを確認したい場合があります。このような状況で役立つのが、VarType 関数です。VarType 関数を使用すると、値のデータ型を簡単に取得できます。

VarType 関数の使い方と実務で役立つコード例を紹介します。

VarType 関数とは?

VarType 関数は、指定した値のデータ型を示す数値(定数)を返します。この数値を使用して、値が数値、文字列、日付、オブジェクトなど、どのデータ型かを判定できます。

【基本構文】

VarType(値)

: データ型を調べたい値や変数。

VarType 関数が返す値一覧

以下は、VarType 関数が返すデータ型とその対応する定数です:

返り値定数データ型
0vbEmpty未初期化状態
1vbNullNULL (空)
2vbInteger整数型 (Integer)
3vbLong長整数型 (Long)
4vbSingle単精度浮動小数点型 (Single)
5vbDouble倍精度浮動小数点型 (Double)
6vbCurrency通貨型 (Currency)
7vbDate日付型 (Date)
8vbString文字列型 (String)
9vbObjectオブジェクト型
11vbBoolean真偽型 (Boolean)
17vbByteバイト型 (Byte)
8192vbArray配列

値の型を判定して表示する

変数のデータ型を確認し、その型をメッセージボックスで表示します。

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関数の使用の注意点

  1. 型が複数該当する場合
    VarType は複数の型が含まれる場合(例えば、配列かつ文字列型)に対応するため、ビット演算を使用して特定の型を確認します。
  2. Variant型との関係
    すべての型は Variant に変換できますが、Variant 自体の型を調べる際に VarType が役立ちます。
  3. オブジェクト型の判定
    オブジェクト型(vbObject)の場合、その具体的な型を確認するには TypeName を使用する必要があります。【VBA】オブジェクトの存在を確認する方法

まとめ

Excel VBA の VarType 関数は、データ型を簡単に判定するための便利なツールです。以下のポイントを押さえて活用しましょう:

  • 基本的なデータ型を判定可能: 数値型、文字列型、日付型など。
  • 配列や未初期化の状態を確認: 配列や空の値も判定できる。
  • 実務での応用例: セル値の型判定、動的処理、エラーチェック。

    -VBAで自動化, VBA一覧, 変換・データ型, 配列・データ操作