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

 

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

 

2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事

 

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

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

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

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

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

 

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

Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

型を調べる

標準モジュール

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 変数の型を調べる方法|まとめ

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

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

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

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

 

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。