TypeName関数:変数のデータ型の名前を取得する
TypeName 関数は Excel VBA で用意されている関数の一つで、引数に指定した変数のデータ型を調べ、データ型の名前を表す文字列を取得します。ここでは Excel VBA における TypeName 関数の使い方について解説します。
※ 変数のデータ型を表す数値を取得する場合は VarType 関数を使用します。詳しくは「VarType関数:変数のデータ型を調べる」を参照されてください。
(Last modified: )
TypeName関数の定義と使い方
TypeName 関数は引数に指定した変数のデータ型を調べ、データ型の名前を表す文字列を取得します。
引数には変数を指定します。データ型毎にどのような文字列が戻り値として返されるのかは次のようになっています。
| 返される文字列 | データ型 |
|---|---|
| object type | objecttype 型のオブジェクト |
| Byte | バイト型 |
| Integer | 整数型 |
| Long | 長整数型 |
| Single | 単精度浮動小数点数型 |
| Double | 倍精度浮動小数点数型 |
| Currency | 通貨型 |
| Decimal | 10 進数型 |
| Date | 日付型 |
| String | 文字列型 |
| Boolean | ブール型 |
| Error | エラー値 |
| Empty | 初期化されていません |
| Null | 有効な値がありません |
| Object | オブジェクト |
| Unknown | 不明な型のオブジェクト |
| Variant | バリアント型 |
| Nothing | オブジェクトを参照しないオブジェクト変数 |
次の例を見てください。
Dim userold As Integer Dim username As String userold = 24 username = "山田太郎" Debug.Print TypeName(userold) 'Integer Debug.Print TypeName(username) 'String
TypeName 関数の引数に整数型の変数と文字列型の変数を指定すると、それぞれのデータ型を表す "Integer" と "String" という文字列を取得してイミディエイトウィンドウに表示します。
バリアント型について
バリアント型の変数を TypeName 関数の引数に指定した場合、バリアント型の変数に実際に格納されている値のデータ型を表す文字列が返されます。
次の例を見てください。
Dim userold As Variant Dim username As Variant userold = 24 username = "山田太郎" Debug.Print TypeName(userold) 'Integer Debug.Print TypeName(username) 'String
バリアント型の変数に数値や文字列を代入したあとで変数のデータ型を調べてみると、バリアント型の変数に格納されている値のデータ型である "Integer" と "String" が返されていることが確認できます。
配列について
配列の変数を TypeName 関数の引数に指定した場合、配列に格納されている値のデータ型を表す文字列のあとに括弧 "()" が追加された文字列が返されます。
次の例を見てください。
Dim username(0) As String Dim other(0) As Variant username(0) = "山田太郎" other(0) = 25 Debug.Print TypeName(username) 'String() Debug.Print TypeName(other) 'Variant()
文字列型の配列の場合、文字列型を表す "String" と配列を表す "()" を組み合わせて "Sting()" となります。バリアント型の配列の場合、バリアント型を表す "Variant" と配列を表す "()" を組み合わせて "Variant()" となります。配列の場合はバリアント型の要素にどんな値が格納されているのではなくバリアント型を表す "Variant" が使用される点に注意してください。
それでは簡単なサンプルを作成して試してみます。
Option Explicit
Sub TypeName関数()
Dim i As Integer
Dim s As Single
Dim c As Currency
Dim d As Date
Dim w As Worksheet
i = 10
s = 3.145
c = 52455600
d = #2/15/2023#
Set w = Worksheets(1)
Debug.Print TypeName(i)
Debug.Print TypeName(s)
Debug.Print TypeName(c)
Debug.Print TypeName(d)
Debug.Print TypeName(w)
End Sub
このプログラムを実行すると TypeName 関数を使って色々なデータ型の変数のデータ型を調べ、取得したデータ型を表す文字列をイミディエイトウィンドウに表示します。
-- --
Excel VBA における TypeName 関数の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。