本記事には広告(PR)が含まれます。
くわしくは プライバシーポリシー をご確認ください。
ExcelのVBAでマクロを作成していると、
「実行時エラー」というメッセージが突然表示されて戸惑ったことはありませんか?
特に、マクロの記録から少しコードを編集できるようになった頃に、
**「VBA 実行時エラー」**でつまずくケースはとても多いものです。
構文自体は間違っていないのに、
-
マクロを実行した瞬間にエラーが表示される
-
「なんで動かないの?」と原因が分からない
-
どこを直せばいいのか分からない
と焦ってしまうこともあるでしょう。
VBAの実行時エラーは、
コードの書き方だけでなく、ブック・シート・データの状態などの環境が原因で発生することも多いエラーです。
例えば、
-
存在しないシートを参照している
-
変数の設定が正しくない
-
データの型が一致していない
-
Excelのバージョンや環境が違う
といった原因で、マクロが正常に動作しなくなることがあります。
この記事では、初心者向けに
-
VBAの実行時エラーとは何か
-
エラーが発生する主な原因
-
エラーが出たときの基本的な確認方法
-
よくあるVBA実行時エラーの一覧と対処法
をわかりやすく解説します。
また、よくある実行時エラーについては
それぞれ詳しい解説記事も用意していますので、原因に応じて確認してみてください。
マクロのエラーは最初は難しく感じますが、
エラーの意味と確認ポイントを理解すれば、落ち着いて対処できるようになります。
まずは、VBAの「実行時エラー」とは何なのかを確認していきましょう。
VBAの実行時エラーとは?初心者がつまずきやすい原因
VBAの「実行時エラー」とは何か

エラー番号やメッセージを確認することで、原因を特定するヒントになります。
VBAの「実行時エラー」とは、
マクロを実行したときに初めて発生するエラーのことです。
VBAには大きく分けて、次の2種類のエラーがあります。
構文エラー(コンパイルエラー)
-
コードの書き方が間違っている
-
実行前にエラーが表示される
-
VBAエディターが自動的に指摘してくれる
例えば、If文で「End If」を書き忘れると、マクロを実行する前にコンパイルエラーが表示されます。
このようにコードの書き方そのものが間違っている場合は、実行前にエラーが表示されるため、比較的原因を見つけやすいのが特徴です。
実行時エラー
-
コードの文法は正しい
-
マクロを実行して初めてエラーが発生する
-
データや環境によって発生することが多い
例えば、次のようなケースです。
-
存在しないシートを指定している
-
空のオブジェクトを参照している
-
数値として扱えないデータを計算している
このような場合、コードの書き方自体は正しいため、
実際にマクロを動かしてみるまでエラーに気づきにくいのが特徴です。
そのため、マクロに慣れ始めた頃に
「急にエラーが出て動かなくなった」と感じることが多くなります。
実行時エラーが発生する主な原因
VBAの実行時エラーは、さまざまな原因で発生します。
特に初心者がつまずきやすい原因として、次のようなものがあります。
存在しないブックやシートを参照している
シート名を直接指定している場合、
名前が少しでも違うとエラーになります。
例
Worksheets("Sheet1")
シート名が変更されていた場合、
実行時エラーが発生します。
オブジェクトや変数が正しく設定されていない
Set文でオブジェクトを設定していない場合などに発生します。
これは実行時エラー91の原因としてよく知られています。
データの型が一致していない
例えば、数値を扱う変数に文字列が入っていると、
型の不一致エラーが発生します。
Excelの環境やバージョンの違い
マクロを作成した環境と、
実行する環境が異なる場合にもエラーが発生することがあります。
例えば
-
Excel 365で作成したマクロをExcel 2019で実行する
-
参照設定しているライブラリが違う
といったケースです。
また、共有ファイルの場合は
他の人がシート構成を変更してしまうこともあります。
エラーメッセージの見方と確認ポイント
実行時エラーが発生すると、
次のようなエラーメッセージが表示されます。
例
インデックスが有効範囲にありません
このとき表示される情報で特に重要なのが、次の2つです。
①エラー番号
例
-
エラー9
-
エラー91
-
エラー1004
エラー番号によって、原因の傾向が分かります。
②エラーメッセージの内容
メッセージの内容は、エラーの原因を理解するヒントになります。
例えば
-
インデックスが有効範囲にありません
-
オブジェクト変数が設定されていません
-
アプリケーション定義またはオブジェクト定義のエラー
などです。
デバッグボタンについて
エラー画面で「デバッグ」をクリックすると、
問題が発生しているコードの行が黄色で表示されます。
この部分が、エラーの原因を探す重要な手がかりになります。
詳しくは次章で紹介します。
VBA実行時エラーが出たときの基本的な対処手順
実行時エラーが表示されたときは、
慌てずに次の順番で確認してみましょう。
① デバッグをクリックする
まずは「デバッグ」をクリックして、
どの行でエラーが発生しているか確認します。


② コードを1行ずつ実行する(F8キー)
F8キーを押すと、コードを1行ずつ実行できます。
これを「ステップ実行」と呼びます。
処理の流れを確認しながら進めることで、
どこで問題が発生しているのか見つけやすくなります。
ステップ実行については以下の記事をご参考ください。
▶マクロのステップインとは?初心者でもわかるVBAのデバッグ基本操作を解説
③ 変数名・シート名・ブック名を確認する
特に多いのが
-
スペルミス
-
シート名の変更
-
変数の設定漏れ
などです。
④ 環境の変更がないか確認する
共有ファイルの場合、
-
シート構成の変更
-
列の削除
-
ファイル名の変更
などが原因になることもあります。
このように、実行時エラーは
コードの書き方だけでなく、環境の変化でも発生するエラーです。
次の章では、
VBAでよく発生する実行時エラーの種類と対処法を紹介します。
よくあるVBA実行時エラー一覧と対処法
VBAの実行時エラーにはさまざまな種類がありますが、
初心者が特に遭遇しやすいエラーはいくつかパターンがあります。
例えば次のようなエラーです。
-
シートが見つからない
-
オブジェクトが設定されていない
-
Excelの操作に失敗した
-
データ型が一致していない
こうしたエラーは、原因の傾向を知っておくだけでも
トラブルの解決がぐっと楽になります。
ここでは、Excel VBAでよく発生する実行時エラーの中でも
特に遭遇しやすいものを紹介します。
実行時エラー9|インデックスが有効範囲にありません

実行時エラー9は、
存在しないブック・シート・配列などを参照したときに発生するエラーです。
例えば次のようなケースです。
-
存在しないシート名を指定している
-
配列の範囲を超えた番号を指定している
-
開いていないブックを参照している
特に多いのが、シート名の変更やスペルミスです。
共有ファイルなどでは、
他の人がシート名を変更してしまい、突然エラーになることもあります。
実行時エラー9の原因や具体的な対処方法については、
こちらの記事で詳しく解説しています。
実行時エラー91|オブジェクト変数が設定されていない

実行時エラー91は、
オブジェクト変数が正しく設定されていないときに発生します。
例えば次のようなケースです。
-
Set文でオブジェクトを設定していない
-
Nothingのままオブジェクトを使っている
-
With構文の対象が存在しない
VBAでは、RangeやWorksheetなどのオブジェクトを扱うことが多いため、
初心者が特に遭遇しやすいエラーの一つです。
実行時エラー91の詳しい原因と対処方法は、
次の記事で具体例とともに解説しています。
▶ VBAで「オブジェクト変数または With ブロック変数が設定されていない」時の対処法
実行時エラー1004|Excel VBAで最も多いエラー

実行時エラー1004は、
Excelの操作に失敗したときに表示されるエラーです。
VBAでは非常によく発生するエラーで、
原因もさまざまです。
例えば
-
存在しないセル範囲を指定している
-
保護されたシートを編集しようとしている
-
コピーや貼り付けが正しく実行できない
など、Excelの操作に関係するエラーでよく発生します。
エラー1004は原因の幅が広いため、
コードや操作内容を確認しながら原因を特定する必要があります。
詳しい原因と修正方法は、
次の記事で具体例とともに解説しています。
その他のよくあるVBA実行時エラー
VBAには、他にもさまざまな実行時エラーがあります。
代表的なものをいくつか紹介します。
実行時エラー13(型が一致しません)
数値と文字列など、
データ型が一致していないときに発生します。
実行時エラー424(オブジェクトが必要です)
オブジェクトを指定せずに
メソッドやプロパティを実行しようとした場合に発生します。
実行時エラー438(オブジェクトはこのプロパティまたはメソッドをサポートしていません)
存在しないメソッドやプロパティを使用したときに発生します。
実行時エラー6(オーバーフロー)
変数の範囲を超える数値を扱ったときに発生します。
このように、VBAの実行時エラーには
さまざまな種類があります。
エラーの内容を確認し、
エラー番号ごとの原因を理解することがトラブル解決の近道です。
VBAのエラーを減らすには「基礎理解」が一番の近道
VBAの実行時エラーは、
コードを書いていると必ず一度は経験するトラブルです。
多くの場合は、
-
オブジェクトの扱い方
-
変数の使い方
-
シートやブックの参照方法
といった VBAの基本理解が深まると、
エラーの原因も見つけやすくなります。
「マクロをもう少し体系的に理解したい」という方は、
こちらの記事も参考にしてみてください。
まとめ
VBAの実行時エラーは、
マクロを実行したときに初めて発生するエラーです。
コードの書き方だけでなく、
-
シート構成の変更
-
データの状態
-
Excelの環境
などが原因になることもあります。
最初は難しく感じるかもしれませんが、
エラーメッセージの意味と確認ポイントを理解すれば、
原因を特定しやすくなります。
実行時エラーが表示された場合は、
-
エラー番号を確認する
-
デバッグで該当行を確認する
-
コードや環境の変更がないか確認する
という手順で原因を探してみましょう。
よくあるVBA実行時エラー一覧
VBAにはさまざまな実行時エラーがありますが、
特に発生しやすいエラーをまとめると次の通りです。
| エラー番号 | 内容 | 主な原因例 |
|---|---|---|
| 9 | インデックスが有効範囲にありません | 存在しないシートや配列を参照している |
| 13 | 型が一致しません | 数値の変数に文字列を代入した |
| 91 | オブジェクト変数が設定されていない | Setでオブジェクトを設定していない |
| 424 | オブジェクトが必要です | オブジェクトを指定せずにメソッドを使用した |
| 438 | このプロパティまたはメソッドはサポートされていません | 存在しないメソッドを使用した |
| 1004 | アプリケーション定義またはオブジェクト定義のエラー | 存在しないセル範囲を指定した |
このように、エラー番号によって原因の傾向が異なります。
該当するエラーについては、それぞれの解説記事も参考にしてみてください。
FAQ|VBA実行時エラーに関するよくある質問
Q1. VBAの実行時エラーとは何ですか?
VBAの実行時エラーとは、マクロを実行したときに発生するエラーのことです。
コードの書き方(文法)は正しくても、
-
存在しないシートを参照している
-
オブジェクトが設定されていない
-
データ型が一致していない
といった原因で、実行中にエラーが発生します。
エラーメッセージには エラー番号(例:9、91、1004など) が表示されるため、
番号を手がかりに原因を調べると解決しやすくなります。
Q2. Excelマクロが突然実行できなくなった原因は何ですか?
Excelマクロが急に実行できなくなる原因として、次のようなケースがよくあります。
-
シート名やブック名が変更された
-
列や行の構造が変更された
-
参照しているファイルが開いていない
-
Excelのバージョンや環境が変わった
特に共有ファイルでは、他の人がシート構成を変更したことが原因でエラーになることも多いため、
コードで指定しているシート名やセル範囲を確認してみましょう。
Q3. 実行時エラーが出たときはどうやって原因を調べればいいですか?
実行時エラーが表示された場合は、次の手順で確認すると原因を特定しやすくなります。
-
エラーメッセージの エラー番号 を確認する
-
「デバッグ」をクリックしてエラー行を確認する
-
F8キーで **1行ずつ実行(ステップ実行)**する
-
変数名・シート名・参照範囲を確認する
特に、黄色で表示されるコード行が原因のヒントになるため、
その周辺のコードを重点的に確認しましょう。
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キーでのステップ実行を使いながらコードを確認すると、
エラーの原因を理解しやすくなります。
【関連記事】
- VBA 実行時エラー9の原因と直し方|「インデックスが有効範囲にありません」を初心者向けに解説
- VBAで「オブジェクト変数または With ブロック変数が設定されていない」時の対処法|実行時エラー91を初心者向けに解説
- マクロ エラー1004の原因と修正方法|実行時エラーの対処法を初心者向けに解説
- マクロのステップインとは?初心者でもわかるVBAのデバッグ基本操作を解説
※外部リンク※
※参考書籍 (PR)※
- 【Excel VBAのエラーを直す本 なぜ、あなたのVBAはスムーズに動かないのか?】(Amazon)
- 【実務で使えるExcel VBAプログラミング作法 ~「動けばOK」から卒業しよう! 生産性が上がるコードの書き方】(Amazon)
※本ボックスにはアフィリエイトリンク(PR)が含まれます。
くわしくは プライバシーポリシー へ。
