VBA TypeName 関数:型名を取得する

はじめに

Excel VBA マクロの TypeName 関数から型名を取得する方法を紹介します。

TypeName 関数は、指定した変数の型名を返します。

100 なら Integer を返します。

文字列なら String を返します。

Sheet1 なら Worksheet を返します。

Variant や Object 型に代入されている型を判定したいときに使用します。

型情報を数値で取得するには「VarType 関数」を使用します。
  • 目次
    • TypeName 関数
    • 解説
    • 使用例

TypeName 関数

TypeName()
の型名を取得します。

引数「値」変数や値を指定します。
戻り値の型文字列型 (String)

引数「値」と戻り値の例

戻り値
100Integer などの数値型の名前
#12/31/2000#Date
"Tips"String
TrueBoolean
CVErr(2042)Error
EmptyEmpty
NullNull
NothingNothing
オブジェクトWorksheet などのオブジェクトの名前
不明な値Unknown

配列なら型の後ろに () を付けて返します。

戻り値
Integer の配列Integer()
Date の配列Date()
String の配列String()
Variant の配列Variant()
オブジェクトの配列オブジェクト名()

解説

引数「値」の型名 (Integer 型なら Integer) を文字列で返します。

引数「値」が配列なら 型名() のように、後ろに () を付けて返します。

Variant 型や Object 型のときは、それに代入されている値の型名を返します。

Variant 型の配列のときは Variant() を返します。

Object 型の配列のときは Object() を返します。

引数「値」が構造体 (Type) なら「エラー パブリック オブジェクト モジュールで定義されたユーザー定義型に限り、変数に割り当てることができ、実行時バインディングの関数に渡すことができます。」が発生します。

型情報を数値で取得するには「VarType 関数」を使用します。

使用例

型名を取得する。

Dim v As Variant
Dim s As String

v = 100
s = TypeName(v)
Debug.Print(s) ' Integer

v = 1.5
s = TypeName(v)
Debug.Print(s) ' Double

v = "Tips"
s = TypeName(v)
Debug.Print(s) ' String

v = Now
s = TypeName(v)
Debug.Print(s) ' Date

v = True
s = TypeName(v)
Debug.Print(s) ' Boolean

v = CVErr(2042)
s = TypeName(v)
Debug.Print(s) ' Error

Dim vEmpty As Variant
s = TypeName(vEmpty)
Debug.Print(s) ' Empty

Dim o As Object
s = TypeName(o)
Debug.Print(s) ' Nothing

Set o = Worksheets(1)
s = TypeName(o)
Debug.Print(s) ' Worksheet

v = Array(1, 2, 3)
s = TypeName(v)
Debug.Print(s) ' Variant()

Dim i(10) As Integer
s = TypeName(i)
Debug.Print(s) ' Integer()

Dim vs(10) As Variant
vs(0) = 10
s = TypeName(vs)
Debug.Print(s) ' Variant()