更新日:、 作成日:

VBA エラー 13 型が一致しません。

はじめに

Excel VBA マクロのエラー 13 「型が一致しません。」の対処法を紹介します。

数値型に文字列を設定するなど、変換できない型を代入すると発生します。

引数に配列を渡すときに、同様のエラーが発生することがあります。

エラーの基本的な対処法は、エラー箇所の特定とその原因となったコードをデバッグします。

デバッグについては「デバッグの仕方」をご覧ください。
エラー処理については「エラー処理をする」をご覧ください。

解決する

それぞれの型には扱える値が決まっています。それ以外の値を代入すると発生します。扱える値は「変数の型やデータ型」をご覧ください。

また特定の場所でモジュール名を指定しても発生します。

型を合わせる

Integer の変数には数値を、Boolean の変数には True か False など型に合った値を代入します。そうでない値を代入するとエラーが発生します。

Dim i As Integer
i = "a" ' エラー
i = 1   ' OK

Dim b As Boolean
b = "a"  ' エラー
b = True ' OK

変数以外にも引数など、値を代入できるものすべてに対して同じことが言えます。

それぞれの型が何で宣言されているのか確認すると原因がわかります。

モジュール名を入力しない

特定の場所で標準モジュール名を入力するとエラーが発生します。そもそも標準モジュール名を入力する必要はないので、その名前を使わないようにします。

Debug.Print(Module1) ' エラー

引数に配列を渡す

引数に配列を渡すときに「エラー 型が一致しません: 配列またはユーザー定義型を指定してください。」が発生することがあります。

引数の型と渡す配列の型を同じにします。詳しくは「配列」の「配列に配列を代入する」をご覧ください。