【ExcelVBA入門】「型が一致しません」のエラー原因・対処方法とは

皆さんは、VBA「型が一致しません」のエラーを見たことがありますか?VBA以外でもプログラミング言語を使う場合、変数を使うのは必須です。そのため、変数に間違った型の値を入れてエラーが出てしまうケースはよくあります。

そこで今回は、

  • 「型が一致しません」のエラー原因
  • エラーが起きたときの対処方法
  • 変数を使う場合によく起こるエラー


について、徹底的に解説します!

エラー「型が一致しません」とは

「実行時エラー ‘13’: 型が一致しません。」のエラーは、変数の型と異なる型の値を代入してしまったときにおこるエラーです。(※使用する環境によっては「実行時エラー ‘13’」部分は表示されないケースもあります。)

よくあるケースだと、Integer型に誤ってString型の文字列を入れてしまうケースですね。

「こんな入れ方誰も間違えないんじゃ・・・」と思うかもしれませんが、次のような場合はどうでしょうか。

セルのデータ:

サンプルコード:

エラーメッセージ:

Noの1行目はCells(2,1)が正しい書き方ですが、誤ってCells(2,2)にしてしまっていますよね。

Range(“A2”)であれば直感的にセル名がわかるので間違えにくいですが、Cellsは数字で行列を指定するため、間違てしまうケースがよくあります。このように、ぱっとコードをみても間違っていないケースもあるので、注意が必要です。

今回サンプルに使ったセルのCells・Rangeについては以下で解説しているので、気になる方は見てみてくださいね!

【VBA入門】Cellsでセルを指定(変数などRangeとの使い分けも解説)
更新日 : 2019年4月17日
【VBA入門】Rangeでセルの範囲指定(Cellsとの使い分けも解説)
更新日 : 2019年5月27日

エラーの対処方法

エラーを対処する方法は、大きく分けて3つあります。

エラー番号で検索して調べる

表示されたメッセージにはエラー番号が載っています。メッセージ文で検索しても見つかるときは見つかりますが、稀に起こるエラーだとメッセージ文だけでは対処方法が見つからないことがあります。

そのため、エラー番号を使って調べる癖をつけるのがおすすめです!VBA エラー 13 対応方法など番号を入れてGoogle検索すると、対応方法を見つけやすいのでぜひ調べてみてくださいね!

エラー番号の場所:

変数名だけで型名がわかるようにする

変数名を見るだけで型名がわかるようにしておくと、ミスが減るのでおすすめです!よくある方法としては、先頭3文字だけで型名がわかるような変数名にする方法です。

例:

このように書いておくことで、型を意識して値を代入する癖がつくのでおすすめです!

変数の確認方法を覚えておく

ただ、さきほどのCells(2,2)のようにセルの値を取得する場合、セルの値を見ないと何のデータが取得できるかわからないですよね。

そんな時は、イミディエイトウィンドウを使った変数確認方法を覚えておくのがおすすめです!1行ずつ変数の値を確認することができるので、ミスにも気づきやすいですし、実際に取得するデータも確認することができます。

今回の場合だと、以下のようにイミディエイトウィンドウに書くだけで、値を確認することができます。
イミディエイトウィンドウに書くコード:

実行結果:

イミディエイトウィンドウを使った変数確認方法は以下で詳しく解説しているので、気になる方は見てみてくださいね!

補足:エラー「オブジェクトが必要です」の対処方法

変数のエラーでは、他にも「オブジェクトが必要です」というエラーが出ることがあります。

オブジェクト変数にSetを付け忘れた場合などによく起こるエラーなのですが、初めて見るとメッセージだけでは原因がわかりづらいですよね。

以下で原因と対処方法について詳しくまとめているので、気になる方は見てみてくださいね!

【ExcelVBA入門】「オブジェクトが必要です」のエラー原因・対処方法とは
更新日 : 2019年3月30日

まとめ

今回は、VBAで「型が一致しません」のエラーが出たときの対処方法について解説しました。変数を使ってコードを書けるようになった方が最初にぶつかるエラーなので、対処方法を覚えておくのがおすすめです。

エラーが起こった時は、ぜひ試してみてくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説