VBAの実行時エラーとは?原因と対処法まとめ|よくあるエラー一覧も解説

VBAの実行時エラーとは?原因と対処法まとめ|よくあるエラー一覧も解説

本記事には広告(PR)が含まれます。
くわしくは プライバシーポリシー をご確認ください。

ExcelのVBAでマクロを作成していると、
「実行時エラー」というメッセージが突然表示されて戸惑ったことはありませんか?

特に、マクロの記録から少しコードを編集できるようになった頃に、
**「VBA 実行時エラー」**でつまずくケースはとても多いものです。

構文自体は間違っていないのに、

  • マクロを実行した瞬間にエラーが表示される

  • 「なんで動かないの?」と原因が分からない

  • どこを直せばいいのか分からない

と焦ってしまうこともあるでしょう。

VBAの実行時エラーは、
コードの書き方だけでなく、ブック・シート・データの状態などの環境が原因で発生することも多いエラーです。

例えば、

  • 存在しないシートを参照している

  • 変数の設定が正しくない

  • データの型が一致していない

  • Excelのバージョンや環境が違う

といった原因で、マクロが正常に動作しなくなることがあります。

この記事では、初心者向けに

  • VBAの実行時エラーとは何か

  • エラーが発生する主な原因

  • エラーが出たときの基本的な確認方法

  • よくあるVBA実行時エラーの一覧と対処法

をわかりやすく解説します。

また、よくある実行時エラーについては
それぞれ詳しい解説記事も用意していますので、原因に応じて確認してみてください。

マクロのエラーは最初は難しく感じますが、
エラーの意味と確認ポイントを理解すれば、落ち着いて対処できるようになります。

まずは、VBAの「実行時エラー」とは何なのかを確認していきましょう。


目次

VBAの実行時エラーとは?初心者がつまずきやすい原因

VBAの「実行時エラー」とは何か

VBA 実行時エラー9 インデックスが有効範囲にありません エラー画面
VBAで存在しないシートを指定すると、このように「実行時エラー」が表示されます。
エラー番号やメッセージを確認することで、原因を特定するヒントになります。

VBAの「実行時エラー」とは、
マクロを実行したときに初めて発生するエラーのことです。

VBAには大きく分けて、次の2種類のエラーがあります。

構文エラー(コンパイルエラー)

  • コードの書き方が間違っている

  • 実行前にエラーが表示される

  • VBAエディターが自動的に指摘してくれる

例えば、If文で「End If」を書き忘れると、マクロを実行する前にコンパイルエラーが表示されます。
このようにコードの書き方そのものが間違っている場合は、実行前にエラーが表示されるため、比較的原因を見つけやすいのが特徴です。

実行時エラー

  • コードの文法は正しい

  • マクロを実行して初めてエラーが発生する

  • データや環境によって発生することが多い

例えば、次のようなケースです。

  • 存在しないシートを指定している

  • 空のオブジェクトを参照している

  • 数値として扱えないデータを計算している

このような場合、コードの書き方自体は正しいため、
実際にマクロを動かしてみるまでエラーに気づきにくいのが特徴です。

そのため、マクロに慣れ始めた頃に
「急にエラーが出て動かなくなった」と感じることが多くなります。


実行時エラーが発生する主な原因

VBAの実行時エラーは、さまざまな原因で発生します。
特に初心者がつまずきやすい原因として、次のようなものがあります。

存在しないブックやシートを参照している

シート名を直接指定している場合、
名前が少しでも違うとエラーになります。

Worksheets("Sheet1")

シート名が変更されていた場合、
実行時エラーが発生します。


オブジェクトや変数が正しく設定されていない

Set文でオブジェクトを設定していない場合などに発生します。
これは実行時エラー91の原因としてよく知られています。


データの型が一致していない

例えば、数値を扱う変数に文字列が入っていると、
型の不一致エラーが発生します。


Excelの環境やバージョンの違い

マクロを作成した環境と、
実行する環境が異なる場合にもエラーが発生することがあります。

例えば

  • Excel 365で作成したマクロをExcel 2019で実行する

  • 参照設定しているライブラリが違う

といったケースです。

また、共有ファイルの場合は
他の人がシート構成を変更してしまうこともあります。


エラーメッセージの見方と確認ポイント

実行時エラーが発生すると、
次のようなエラーメッセージが表示されます。

実行時エラー ‘9’
インデックスが有効範囲にありません

このとき表示される情報で特に重要なのが、次の2つです。

①エラー番号

  • エラー9

  • エラー91

  • エラー1004

エラー番号によって、原因の傾向が分かります。


②エラーメッセージの内容

メッセージの内容は、エラーの原因を理解するヒントになります。

例えば

  • インデックスが有効範囲にありません

  • オブジェクト変数が設定されていません

  • アプリケーション定義またはオブジェクト定義のエラー

などです。


デバッグボタンについて

エラー画面で「デバッグ」をクリックすると、
問題が発生しているコードの行が黄色で表示されます。

この部分が、エラーの原因を探す重要な手がかりになります。

詳しくは次章で紹介します。


VBA実行時エラーが出たときの基本的な対処手順

実行時エラーが表示されたときは、
慌てずに次の順番で確認してみましょう。

① デバッグをクリックする

まずは「デバッグ」をクリックして、
どの行でエラーが発生しているか確認します。

VBA 実行時エラー9 インデックスが有効範囲にありません
VBA実行時エラーが発生すると、このようなメッセージが表示されます。 「デバッグ」をクリックすると、エラーが発生したコードの場所を確認できます。
VBA デバッグ エラー行 黄色ハイライト
デバッグをクリックすると、エラーが発生したコード行が黄色で表示されます。 この行を確認することで原因を特定しやすくなります。

② コードを1行ずつ実行する(F8キー)

F8キーを押すと、コードを1行ずつ実行できます。

これを「ステップ実行」と呼びます。

処理の流れを確認しながら進めることで、
どこで問題が発生しているのか見つけやすくなります。

ステップ実行については以下の記事をご参考ください。

マクロのステップインとは?初心者でもわかるVBAのデバッグ基本操作を解説


③ 変数名・シート名・ブック名を確認する

特に多いのが

  • スペルミス

  • シート名の変更

  • 変数の設定漏れ

などです。


④ 環境の変更がないか確認する

共有ファイルの場合、

  • シート構成の変更

  • 列の削除

  • ファイル名の変更

などが原因になることもあります。


このように、実行時エラーは
コードの書き方だけでなく、環境の変化でも発生するエラーです。

次の章では、
VBAでよく発生する実行時エラーの種類と対処法を紹介します。


よくあるVBA実行時エラー一覧と対処法

VBAの実行時エラーにはさまざまな種類がありますが、
初心者が特に遭遇しやすいエラーはいくつかパターンがあります。

例えば次のようなエラーです。

  • シートが見つからない

  • オブジェクトが設定されていない

  • Excelの操作に失敗した

  • データ型が一致していない

こうしたエラーは、原因の傾向を知っておくだけでも
トラブルの解決がぐっと楽になります。

ここでは、Excel VBAでよく発生する実行時エラーの中でも
特に遭遇しやすいものを紹介します。


実行時エラー9|インデックスが有効範囲にありません

VBA 実行時エラー9 インデックスが有効範囲にありません シート名ミスの例
存在しないシート(売上データ)を指定すると実行時エラー9が発生します

実行時エラー9は、
存在しないブック・シート・配列などを参照したときに発生するエラーです。

例えば次のようなケースです。

  • 存在しないシート名を指定している

  • 配列の範囲を超えた番号を指定している

  • 開いていないブックを参照している

特に多いのが、シート名の変更やスペルミスです。

共有ファイルなどでは、
他の人がシート名を変更してしまい、突然エラーになることもあります。

実行時エラー9の原因や具体的な対処方法については、
こちらの記事で詳しく解説しています。

VBA 実行時エラー9の原因と直し方


実行時エラー91|オブジェクト変数が設定されていない

VBAの実行時エラー91「オブジェクト変数または With ブロック変数が設定されていません」と表示されたエラー画面
実行時エラー91の表示画面。オブジェクト変数が設定されていない状態で処理が実行されるとこのエラーが出ます。

実行時エラー91は、
オブジェクト変数が正しく設定されていないときに発生します。

例えば次のようなケースです。

  • Set文でオブジェクトを設定していない

  • Nothingのままオブジェクトを使っている

  • With構文の対象が存在しない

VBAでは、RangeやWorksheetなどのオブジェクトを扱うことが多いため、
初心者が特に遭遇しやすいエラーの一つです。

実行時エラー91の詳しい原因と対処方法は、
次の記事で具体例とともに解説しています。

VBAで「オブジェクト変数または With ブロック変数が設定されていない」時の対処法


実行時エラー1004|Excel VBAで最も多いエラー

実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーですと表示された画面
存在しないセル(A1の上など)を指定すると「アプリケーション定義またはオブジェクト定義のエラー」が発生します。

実行時エラー1004は、
Excelの操作に失敗したときに表示されるエラーです。

VBAでは非常によく発生するエラーで、
原因もさまざまです。

例えば

  • 存在しないセル範囲を指定している

  • 保護されたシートを編集しようとしている

  • コピーや貼り付けが正しく実行できない

など、Excelの操作に関係するエラーでよく発生します。

エラー1004は原因の幅が広いため、
コードや操作内容を確認しながら原因を特定する必要があります。

詳しい原因と修正方法は、
次の記事で具体例とともに解説しています。

マクロ エラー1004の原因と修正方法


その他のよくあるVBA実行時エラー

VBAには、他にもさまざまな実行時エラーがあります。
代表的なものをいくつか紹介します。

実行時エラー13(型が一致しません)

数値と文字列など、
データ型が一致していないときに発生します。


実行時エラー424(オブジェクトが必要です)

オブジェクトを指定せずに
メソッドやプロパティを実行しようとした場合に発生します。


実行時エラー438(オブジェクトはこのプロパティまたはメソッドをサポートしていません)

存在しないメソッドやプロパティを使用したときに発生します。


実行時エラー6(オーバーフロー)

変数の範囲を超える数値を扱ったときに発生します。


このように、VBAの実行時エラーには
さまざまな種類があります。

エラーの内容を確認し、
エラー番号ごとの原因を理解することがトラブル解決の近道です。


VBAのエラーを減らすには「基礎理解」が一番の近道

VBAの実行時エラーは、
コードを書いていると必ず一度は経験するトラブルです。

多くの場合は、

  • オブジェクトの扱い方

  • 変数の使い方

  • シートやブックの参照方法

といった VBAの基本理解が深まると、
エラーの原因も見つけやすくなります。

「マクロをもう少し体系的に理解したい」という方は、
こちらの記事も参考にしてみてください。

VBAを独学で学ぶには?初心者でもわかるマクロの勉強手順とおすすめ教材


まとめ

VBAの実行時エラーは、
マクロを実行したときに初めて発生するエラーです。

コードの書き方だけでなく、

  • シート構成の変更

  • データの状態

  • Excelの環境

などが原因になることもあります。

最初は難しく感じるかもしれませんが、
エラーメッセージの意味と確認ポイントを理解すれば、
原因を特定しやすくなります。

実行時エラーが表示された場合は、

  1. エラー番号を確認する

  2. デバッグで該当行を確認する

  3. コードや環境の変更がないか確認する

という手順で原因を探してみましょう。

よくあるVBA実行時エラー一覧

VBAにはさまざまな実行時エラーがありますが、
特に発生しやすいエラーをまとめると次の通りです。

エラー番号 内容 主な原因例
9 インデックスが有効範囲にありません 存在しないシートや配列を参照している
13 型が一致しません 数値の変数に文字列を代入した
91 オブジェクト変数が設定されていない Setでオブジェクトを設定していない
424 オブジェクトが必要です オブジェクトを指定せずにメソッドを使用した
438 このプロパティまたはメソッドはサポートされていません 存在しないメソッドを使用した
1004 アプリケーション定義またはオブジェクト定義のエラー 存在しないセル範囲を指定した

このように、エラー番号によって原因の傾向が異なります。
該当するエラーについては、それぞれの解説記事も参考にしてみてください。

FAQ|VBA実行時エラーに関するよくある質問

Q1. VBAの実行時エラーとは何ですか?

VBAの実行時エラーとは、マクロを実行したときに発生するエラーのことです。

コードの書き方(文法)は正しくても、

  • 存在しないシートを参照している

  • オブジェクトが設定されていない

  • データ型が一致していない

といった原因で、実行中にエラーが発生します。

エラーメッセージには エラー番号(例:9、91、1004など) が表示されるため、
番号を手がかりに原因を調べると解決しやすくなります。


Q2. Excelマクロが突然実行できなくなった原因は何ですか?

Excelマクロが急に実行できなくなる原因として、次のようなケースがよくあります。

  • シート名やブック名が変更された

  • 列や行の構造が変更された

  • 参照しているファイルが開いていない

  • Excelのバージョンや環境が変わった

特に共有ファイルでは、他の人がシート構成を変更したことが原因でエラーになることも多いため、
コードで指定しているシート名やセル範囲を確認してみましょう。


Q3. 実行時エラーが出たときはどうやって原因を調べればいいですか?

実行時エラーが表示された場合は、次の手順で確認すると原因を特定しやすくなります。

  1. エラーメッセージの エラー番号 を確認する

  2. 「デバッグ」をクリックしてエラー行を確認する

  3. F8キーで **1行ずつ実行(ステップ実行)**する

  4. 変数名・シート名・参照範囲を確認する

特に、黄色で表示されるコード行が原因のヒントになるため、
その周辺のコードを重点的に確認しましょう。


Q4. VBAの実行時エラー1004とは何ですか?

実行時エラー1004は、Excelの操作に失敗したときに表示されるエラーです。

例えば次のような場合に発生します。

  • 存在しないセル範囲を指定している

  • 保護されたシートを編集しようとしている

  • コピーや貼り付けの処理に失敗している

VBAの中でも特に発生頻度が高いエラーのため、
コードや操作内容を確認しながら原因を特定する必要があります。

詳しい原因と対処法は、こちらの記事で解説しています。

▶ マクロ エラー1004の原因と修正方法
https://dailyexcelhacks.blog/vba-error-1004


Q5. VBAの実行時エラーと構文エラーの違いは何ですか?

VBAには主に次の2種類のエラーがあります。

構文エラー(コンパイルエラー)

  • コードの書き方が間違っている

  • 実行前にエラーが表示される

例:If文の End If を書き忘れる


実行時エラー

  • コードの文法は正しい

  • マクロを実行したときに発生する

例:存在しないシートを参照している

このように、実行タイミングが大きな違いになります。


Q6. VBAの実行時エラーを防ぐ方法はありますか?

実行時エラーを完全に防ぐことは難しいですが、次のポイントを意識するとエラーを減らすことができます。

  • シート名やブック名を固定で書きすぎない

  • 変数を正しく宣言する(Option Explicitを使用する)

  • データの有無を事前にチェックする

  • エラー処理(On Error)を設定する

特に初心者のうちは、F8キーでのステップ実行を使いながらコードを確認すると、
エラーの原因を理解しやすくなります。

【関連記事】

※外部リンク※

    ※参考書籍 (PR)

     

    ※本ボックスにはアフィリエイトリンク(PR)が含まれます。
    くわしくは プライバシーポリシー へ。

    VBAの実行時エラーとは?原因と対処法まとめ|よくあるエラー一覧も解説
    最新情報をチェックしよう!