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

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

Excel VBAを最短で習得したい方へ

元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Excel VBAを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」

このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、より深くExcel VBAについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Excel VBAならではの学習方法や、現役エンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta2_vba2

LINEで送る
Pocket

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

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

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

おすすめコンテンツ

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

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