TypeName関数:変数のデータ型の名前を取得する

TypeName 関数は Excel VBA で用意されている関数の一つで、引数に指定した変数のデータ型を調べ、データ型の名前を表す文字列を取得します。ここでは Excel VBA における TypeName 関数の使い方について解説します。

※ 変数のデータ型を表す数値を取得する場合は VarType 関数を使用します。詳しくは「VarType関数:変数のデータ型を調べる」を参照されてください。

(Last modified: )

TypeName関数の定義と使い方

TypeName 関数は引数に指定した変数のデータ型を調べ、データ型の名前を表す文字列を取得します。

TypeName(varname)

引数には変数を指定します。データ型毎にどのような文字列が戻り値として返されるのかは次のようになっています。

返される文字列データ型
object typeobjecttype 型のオブジェクト
Byteバイト型
Integer整数型
Long長整数型
Single単精度浮動小数点数型
Double倍精度浮動小数点数型
Currency通貨型
Decimal10 進数型
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関数の定義と使い方(1)

このプログラムを実行すると TypeName 関数を使って色々なデータ型の変数のデータ型を調べ、取得したデータ型を表す文字列をイミディエイトウィンドウに表示します。

TypeName関数の定義と使い方(2)

-- --

Excel VBA における TypeName 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。