ExcelVBA 変数の型が期待と違う|型が一致しません|型を調べる方法

 

ExcelVBA  変数の型(データ型)を適切に設定することが重要。変数の型が期待されるものと違うと、「型が一致しません(エラー 13)」 が発生します。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

Excel VBA 変数の型を調べる方法|シーン

以下のシーンで利用します。

1.ユーザー入力を数値型に変換する(例:"123" → 123)

2.オブジェクト型かどうかを判定する(例:セルのオブジェクト or 文字列)

3.エラーを回避するために、型をチェックして処理を分岐する。

 

Excel VBA 変数の型を調べる方法サンプルコード

型を調べる

標準モジュール

Option Explicit

Sub 型チェック()
    Dim testValue As Variant
    testValue = "123" ' 文字列としての123
    
    Debug.Print "VarType: " & VarType(testValue) ' 結果:8(文字列)
    Debug.Print "TypeName: " & TypeName(testValue) ' 結果:"String"
    
    If IsNumeric(testValue) Then
        Debug.Print "これは数値として扱えます。"
    Else
        Debug.Print "これは数値ではありません。"
    End If
End Sub

・VarType(testValue)は、数値(例:8)を返す。

・TypeName(testValue)は、人間が読める文字列(例:"String")を返す。

・IsNumeric(testValue)は、数値かどうかを判定する("123" は文字列でも数値として扱える)

 

型が一致しません(エラー 13)の原因と対策

標準モジュール(型が違うデータを代入したときに発生するエラー)

Option Explicit

Sub 型エラー()
    Dim num As Integer
    num = "abc" ' 文字列を数値型に代入 → エラー 13(型が一致しません)
End Sub

標準モジュール(エラー回避方法)

Option Explicit

Sub 型エラー回避()
    Dim num As Integer
    Dim inputValue As Variant
    inputValue = "123" ' 文字列の123

    If IsNumeric(inputValue) Then
        num = CInt(inputValue) ' 数値に変換して代入
        Debug.Print "変換成功:" & num
    Else
        Debug.Print "エラー:数値に変換できません"
    End If
End Sub

・IsNumeric(変数)で 数値かどうか確認してから代入する。

・CInt(変数), CDbl(変数), CStr(変数)で 適切な型に変換する。

型を判定して処理を分岐する

標準モジュール(入力値の型に応じて処理を変える)

Option Explicit

Sub 型チェック_分岐()
    Dim value As Variant
    value = Date ' 今日の日付

    Select Case VarType(value)
        Case vbString
            Debug.Print "文字列型です"
        Case vbInteger, vbLong, vbDouble
            Debug.Print "数値型です"
        Case vbDate
            Debug.Print "日付型です"
        Case Else
            Debug.Print "その他の型です"
    End Select
End Sub

・VarType()を使うと、型ごとの判定ができる。

・Select Case を使うと、コードが読みやすくなる。

 

「日頃から本サイトを閲覧いただいているお客様だけに、
【無料】EXCEL VBA コードショートカット集をご紹介させていただきます。
きっと気に入っていただけると思います」

👉 無料:ExcelVBAコード・ショートカット集

 

Excel VBA 変数の型を調べる方法|まとめ

・VBAでは変数の型を正しく扱うことが重要

・型を調べるには VarType()や TypeName()を使う。

・「型が一致しません」エラーは IsNumeric()などで事前チェックして防ぐ。

・数値変換には CInt(), CDbl(), CStr()を使う。