VBAでプログラムを作成していると、次のようなことはありませんか?
- 変数の型を確認したい
- オブジェクトの種類を調べたい
- デバッグ時にデータ型を確認したい
このような場合は、TypeName関数を使うことで解決できます。
変数やオブジェクトのデータ型を文字列で取得できる便利な関数です。
この記事では、TypeName関数の基本から実務での活用方法まで分かりやすく解説します。
この記事でできること
- 変数の型を確認できる
- オブジェクトの種類を調べられる
- デバッグ作業が効率化できる
TypeName関数とは?
TypeName関数は、指定した変数やオブジェクトのデータ型を文字列で返す関数です。
例えば次のような結果を取得できます。
- String
- Integer
- Double
- Range
- Worksheet
基本:TypeName関数の使い方
基本構文はこちらです。
TypeName(変数)
基本例
Dim str As String
str = "ExcelVBA"
MsgBox TypeName(str)
→ String
数値型の確認
Dim num As Integer
num = 100
MsgBox TypeName(num)
→ Integer
Double型の確認
Dim num As Double
num = 123.45
MsgBox TypeName(num)
→ Double
Variant型の確認
Dim val As Variant
val = "テスト"
MsgBox TypeName(val)
→ String
Variantの場合は格納されている実際の型が返されます。
Rangeオブジェクトの確認
Dim rng As Range
Set rng = Range("A1")
MsgBox TypeName(rng)
→ Range
Worksheetオブジェクトの確認
Dim ws As Worksheet
Set ws = ActiveSheet
MsgBox TypeName(ws)
→ Worksheet
セルの値の型を確認する
MsgBox TypeName(Range("A1").Value)
セルの値が文字列なのか数値なのか確認できます。
よく返される型一覧
| 戻り値 | 内容 |
|---|---|
| String | 文字列 |
| Integer | 整数 |
| Long | 長整数 |
| Double | 小数 |
| Date | 日付 |
| Boolean | True/False |
| Range | セル範囲 |
| Worksheet | ワークシート |
条件分岐で使う
型によって処理を変更できます。
Dim val As Variant
val = Range("A1").Value
If TypeName(val) = "String" Then
MsgBox "文字列です"
End If
TypeNameとVarTypeの違い
| 関数 | 戻り値 |
|---|---|
| TypeName | 文字列 |
| VarType | 数値コード |
TypeName
MsgBox TypeName("ABC")
→ String
VarType
MsgBox VarType("ABC")
→ 8
実務での活用例
- デバッグ作業
- データチェック
- 入力値検証
- オブジェクト判定
特にエラー調査時に非常に役立ちます。
注意点
① Variantは中身の型を返す
Variantという文字列は返りません。
② Emptyの場合
Dim val As Variant
MsgBox TypeName(val)
→ Empty
③ オブジェクトにも使用可能
RangeやWorksheetなども判定できます。
安全な書き方(おすすめ)
Dim val As Variant
val = Range("A1").Value
Select Case TypeName(val)
Case "String"
MsgBox "文字列"
Case "Double"
MsgBox "数値"
Case "Date"
MsgBox "日付"
End Select
よくあるエラーと対処法
① 思った型が返らない
Variant型の場合は実際のデータ型が返されます。
② Emptyになる
変数へ値が代入されていない可能性があります。
③ オブジェクトエラーになる
Setされているか確認してください。
④ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- TypeNameはデータ型を取得する関数
- 文字列で分かりやすく表示される
- デバッグやエラー調査で便利
- VarTypeとの違いも覚えておくと便利
TypeName関数を使いこなせるようになると、データ型の確認が簡単になり、エラーの原因調査もスムーズになります。
デバッグ作業では非常に役立つため、ぜひ覚えておきましょう。

コメント