マクロを実行したらエラーが表示され、「デバッグ」を押すとコードが黄色くなることがあります。
ExcelやVBAが壊れたわけではありません。
この記事では、黄色い行の意味と、最初に確認すること、もう一度実行するまでの流れを説明します。
VBAコードが黄色くなるのはなぜ?
結論からいうと、黄色い行は、VBAの実行が現在その場所で止まっていることを示しています。
この記事では、初心者によくある、
「エラーが表示されたあとにデバッグを押したら黄色くなった」
という場合を中心に説明します。
エラー画面で「デバッグ」を押すと、コードの一部が黄色く表示されることがあります。
黄色くなっただけで、Excelやファイルが壊れたわけではありません。
ただし、
「黄色い行=その行のコードが必ず間違っている」
とは限りません。
まずは次の3つを一緒に確認します。
・エラーメッセージ
・エラー番号
・黄色くなった場所
黄色い行だけを見て、すぐにコードを書き換えないようにしましょう。
まずはエラーメッセージを確認する
最初に確認するのは、黄色い行ではありません。
黄色くなる前に表示されたエラーメッセージを確認します。
確認する内容は次の2つです。
・エラー番号
・メッセージ全文
今回の記事では、次のコードを使って確認します。
Sub 黄色い行を確認する()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("売上一覧表")
MsgBox ws.Name
End Sub
このコードでは、
売上一覧表
という名前のシートを指定しています。
しかし、今回使用しているExcelの実際のシートタブ名は、
Sheet1 です。

そのため、マクロを実行すると次のエラーが表示されます。
実行時エラー ‘9’:
インデックスが有効範囲にありません。
エラー画面では、次の内容を確認してください。
・エラー番号
・メッセージ全文
今回の場合は、
実行時エラー「9」
と、
インデックスが有効範囲にありません。
という内容を確認できます。
エラー画面に「デバッグ」が表示されている場合は、クリックします。
ここでは、まだ原因を決めつけません。
次に、VBAがどの場所で止まったのかを確認します。
黄色くなった行を確認する
「デバッグ」をクリックすると、VBEが開きます。
今回の例では、次の行が黄色く表示されます。
Set ws = ThisWorkbook.Worksheets("売上一覧表")

黄色い行は、VBAの実行が現在その場所で止まっていることを示しています。
今回のコードでは、
売上一覧表
という名前のシートを使おうとしたところで止まっています。
ただし、
「黄色い行=その行のコードが必ず間違っている」
とは限りません。
実際のコードでは、
エラーメッセージ
↓
黄色い行
↓
コード内の指定
の順番で確認してください。
初心者が最初に確認すること
原因が分からない場合は、まずコード内の指定を確認します。
シート名が合っているか
コードに書かれているシート名と、実際のExcelのシート名を確認します。
今回のコードでは、
Set ws = ThisWorkbook.Worksheets("売上一覧表")
となっています。
Excelの画面には、表のタイトルとして、
売上一覧表
と表示されています。
しかし、VBAで指定するシート名は、画面下部のシートタブに表示されている名前です。

今回の実際のシートタブ名は、
Sheet1
です。
そのため、「売上一覧表」という名前のシートが見つからず、エラーになっています。
シート名を確認するときは、表のタイトルではなく、画面下部のシートタブを確認してください。
その他に確認すること
シート名以外にも、次のような指定が原因になることがあります。
セルや範囲
コードで指定している、
A1
A1:D10
などの範囲が、実際のExcelと合っているか確認します。
ファイルやフォルダー
ファイルを開く処理やPDF保存では、次の内容を確認します。
・指定したファイルがあるか
・保存先フォルダーがあるか
・ファイル名や保存場所が変わっていないか
コピーしたコード
WebサイトやAIのコードを使った場合は、自分のExcelに合わせた変更が必要なことがあります。
特に確認するのは、
・シート名
・セル位置
・ファイル名
・保存先
です。
自分でコードを修正したあとに動かなくなった場合は、変更した場所から確認してください。
VBAの基本操作から確認したい場合は、次のページをご覧ください。
実行時エラー1004と表示された場合
今回の例は、実行時エラー「9」です。
VBAでは、別の処理で、
実行時エラー1004
が表示されることもあります。
1004は原因が1つではありません。
まずは、
・エラーメッセージ全文
・黄色くなった場所
・そのとき何をしようとしていたか
を確認してください。
黄色い行だけを見て、原因を決めつけないことが大切です。
黄色い表示を解除して、もう一度実行する方法
エラーメッセージと黄色い行を確認したら、マクロの実行をいったん終了します。
そのあと、必要な場所を修正してもう一度実行します。
Step1:マクロの実行をいったん停止する
黄色い行が表示された状態で、VBE上部を確認します。
四角い停止ボタン(リセット)をクリックしてください。

黄色い表示が消えたことを確認します。
Step2:原因と思われる場所を修正する
今回の例では、コードで指定したシート名と、実際のシートタブ名が違っています。
修正前はこちらです。
Set ws = ThisWorkbook.Worksheets("売上一覧表")
実際のシートタブ名に合わせて、次のように修正します。
Set ws = ThisWorkbook.Worksheets("Sheet1")
修正後のコードはこちらです。
Sub 黄色い行を確認する()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
MsgBox ws.Name
End Sub
Step3:マクロをもう一度実行する
コードを修正したら、マクロをもう一度実行します。
正常に動くと、
Sheet1
というメッセージが表示されます。
今回の流れは、次のとおりです。
エラーメッセージを確認
↓
黄色い行を確認
↓
原因を確認
↓
リセット
↓
必要な場所を修正
↓
もう一度実行
原因が分からないまま、何度も実行するのはおすすめしません。
マクロの実行方法が分からない場合は、次のページをご覧ください。
もう一度実行しても黄色くなる場合
同じ場所で何度も止まる場合は、表示された内容に合わせて次のページへ進みます。
エラー番号が表示されている場合
エラー番号が表示されている場合は、その番号に合った確認方法を調べます。
マクロの実行方法が分からない場合
マクロの実行手順そのものを確認したい場合はこちらです。
正常に動くコードで確認したい場合
VBAそのものが動くか、自分のコードだけに問題があるのか確認したい場合は、正常に動くコードを試してみましょう。
▶ VBAコード集
完成サンプルで確認したい場合
コードだけでは確認しにくい場合は、完成サンプルを使って動作を確認できます。
自分のコードだけ動かない場合
記事を確認しても原因が分からない場合は、現在の状況を整理して送ることができます。
個別の業務やコードについて確認したい場合はこちらです。
▶ お問い合わせ
まとめ
VBAコードが黄色くなった場合は、次の順番で確認してください。
- エラーメッセージを見る
- 黄色い行を見る
- シート名やその他の指定を確認する
- 必要な場所を修正する
- リセットしてもう一度実行する
- 解決しない場合は原因別の記事へ進む
今回の例では、表のタイトル「売上一覧表」と、実際のシートタブ名「Sheet1」の違いが原因でした。
まずは黄色い行だけを修正せず、表示されたエラーメッセージとエラー番号を確認してください。


コメント