教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでTypeName関数の使い方

構文

構文は以下の通りです。

TypeName(変数)

解説

TypeName関数は、引数として渡した変数のデータ型を戻り値(文字列)で返す関数です。例えば、数値、文字列、オブジェクトなど、変数がどのようなデータ型であるかを確認したいときに使います。これにより、プログラム内でのデータの種類を簡単にチェックすることができます。

【一般的な戻り値】

戻り値 内容
空 (Empty) 変数に何も設定されていない場合
Null 変数がNullである場合
Boolean TrueまたはFalseの論理値
Byte バイト型(0〜255の整数)
Integer 整数型(-32,768〜32,767)
Long 長い整数型(-2,147,483,648〜2,147,483,647)
Single 単精度浮動小数点数(小数点を含む数値)
Double 倍精度浮動小数点数(より大きな小数点を含む数値)
Currency 通貨型(小数点を含む正確な数値)
Decimal 十進型(正確な数値計算に使用)
Date 日付型
String 文字列型
Object オブジェクト型(Excelのオブジェクトなど)
Error エラー型
Nothing オブジェクトに対してNothingが設定されている場合
Unknown 未知のデータ型
Range Excelのセル範囲を表すRangeオブジェクト
Workbook Excelのブックを表すWorkbookオブジェクト
Worksheet Excelのシートを表すWorksheetオブジェクト
Variant 変数が異なる型を含むことができるVariant型
Array 配列型

【フォーム内コントロールの戻り値】

戻り値 内容
TextBox テキスト入力用のコントロール → "TextBox"
ComboBox ドロップダウンリスト付きのテキスト入力コントロール → "ComboBox"
ListBox 複数の選択肢から選べるリストコントロール → "ListBox"
CommandButton ボタンコントロール → "CommandButton"
Label テキストラベルコントロール → "Label"
CheckBox チェックボックス(選択/非選択) → "CheckBox"
OptionButton ラジオボタン(複数の選択肢のうち1つを選択) → "OptionButton"
ToggleButton 切り替えボタン → "ToggleButton"
Frame 他のコントロールをグループ化するためのフレーム → "Frame"
MultiPage 複数ページを切り替えて表示できるタブ → "MultiPage"
SpinButton 数値を増減させるためのスピンボタン → "SpinButton"
ScrollBar スクロールバーコントロール → "ScrollBar"
Image 画像表示用のコントロール → "Image"
RefEdit 範囲を指定するためのコントロール → "RefEdit"

プログラミング例

具体的なプログラミング例を紹介します。

Sub データ型の確認()
    ' 数値型の変数を作成
    Dim 数値 As Integer
    数値 = 100
    ' 文字列型の変数を作成
    Dim 文字列 As String
    文字列 = "こんにちは"
    ' オブジェクト型の変数を作成
    Dim ワークブック As Workbook
    Set ワークブック = ThisWorkbook
    ' それぞれのデータ型をTypeName関数で表示
    MsgBox "数値のデータ型: " & TypeName(数値)
    MsgBox "文字列のデータ型: " & TypeName(文字列)
    MsgBox "ワークブックのデータ型: " & TypeName(ワークブック)
End Sub

上記のプログラムでは、数値型、文字列型、オブジェクト型の3つの変数を作成しています。それぞれの変数のデータ型をTypeName関数を使って確認し、メッセージボックスで表示しています。例えば、「数値」という変数には100という数値が入っており、TypeName関数はこれがInteger型であることを返します。同様に、文字列型やオブジェクト型の変数についても確認できます。

まとめ

TypeName関数は、変数のデータ型を文字列として返す非常に便利な関数です。特に、異なるデータ型を扱うプログラムでは、どのようなデータが変数に入っているかを確認するのに役立ちます。これにより、予期しないエラーを防ぐことができ、デバッグが容易になります。