スライドショー

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

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

そこで今回は、

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


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

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

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

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

Dim i as Interger
i = "侍エンジニア"

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

セルのデータ:

サンプルコード:

Sub Test2()
  Dim intNo As Integer
  intNo = ActiveSheet.Cells(2, 2).Value

  MsgBox "1行目のデータのNo:" & intNo

End Sub

エラーメッセージ:

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

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

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

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

エラーの対処方法

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

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

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

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

エラー番号の場所:

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

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

例:

Dim intNo as Integer
Dim lngNum as Long
Dim dblTaxCost as Double
Dim strMessage as String

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

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

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

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

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

?Cells(2,2).Value

実行結果:

侍エンジニア1

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

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

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

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

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

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

まとめ

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

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

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

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

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

おすすめコンテンツ

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

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