【ExcelVBA】変数のデータ型を調べる(VarType関数)

りゅう
こんにちは!りゅう(@ryupong_b)です。
今回は、「データ型の調べ方」について解説していきます。
はじめに

ユーザが数字を入力すると想定するプログラムがあった場合に、文字列が入力されると困りますよね。
そういった場合に、データ型を調べる必要があります。
今回は、データ型の調べ方について解説します。

この記事を読むメリット
  • データ型を調べる際に使用する「VarType関数」の構文、戻り値について解説します。
  • VarTypeの細かい注意点なども解説します。

VarType関数

データ型を調べる際には、VarType関数を使用します。

構文

構文

VarType(varname)

引数

# 引数 必須 詳細
1 varname データ型を調べたい変数を指定します。
※ユーザ定義型は指定できません。

戻り値

# 定数 詳細
1 0 vbEmpty Empty値
2 1 vbNull Null値
3 2 vbInteger Integer型(整数型)
4 3 vbLong Long型(長整数型)
5 1280 vbLongLong LongLong型
6 4 vbSingle Single型
7 5 vbDouble Double型
8 6 vbCurrency Currency型
9 7 vbDate Date型
10 8 vbString String型
11 9 vbObject Object型(オブジェクト)
12 10 vbError エラー値
13 11 vbBoolean Boolean型
14 12 vbVariant Variant型
15 13 vbDataObject 非OLEオートメーションオブジェクト
16 14 vbDecimal 10進数型
17 17 vbByte バイト型
18 8192 vbArray 配列

配列の場合は戻り値が特殊で、データ型 + vbArray(8192)が戻り値として返却されます。
例えば、Variant型の配列の場合は8204(vbVariant(12) + vbArray(8192))が返却されます。

めい
データ型を調べたいときは、配列のパターンも意識したコーディングができると完璧だね!

サンプルコード

ここからは、サンプルコードを踏まえて解説していきます。

Variantの型調査

サンプルコード

サンプルコード
Option Explicit

Public Sub testVarType()

    Dim var As Variant  ' Variant型変数

    var = "AAA"

    MsgBox VarType(var)  ' 出力結果:8 (vbString)

    var = 100

    MsgBox VarType(var)  ' 出力結果:2 (vbInteger)

    var = Array(1, 2, 3)

    MsgBox VarType(var)  ' 出力結果:8194 (vbVariant + vbArray)

End Sub
りゅう
VarType関数は、主にVariantの内部のデータ型を調べる際に使用されます。
上記サンプルは、Varianth型変数に文字を入れた場合、数値を入れた場合の遷移を試すコードです。

VarType関数の使用イメージ

サンプルコード

サンプルコード
Option Explicit

Public Sub testVarType()

    Dim var As Variant  ' Variant型変数

    ' 数値チェック
    If Not VarType(var) = vbInteger Then
    
        MsgBox "数値を入力してください。"
        Exit Sub
    End If

    ' ...
End Sub
めい
個人的によく使われると思うのが、数値 or 数値ではないの判定です。
上記は数値以外が入力された場合、処理を終了するプログラムです。

最後に

いかがでしたでしょうか。
バグやエラーを回避するために、チェック処理は重要となります。

この記事が、読者さまのお力になれれば嬉しいです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA