目次
VBAのエラーは初心者の最大の敵
VBAを書いていると、必ず出てくるのがエラー。
-
実行時エラー
-
コンパイルエラー
-
原因が分からない謎の停止
今回は、自分では原因が分からなかったエラーをChatGPTにそのまま投げてみました。
エラーが出たVBAコード
Sub ErrorSample()
Dim ws As Worksheet
ws.Range("A1").Value = "テスト"
End Sub
実行すると出るエラー
このマクロを実行すると、次のエラーが表示されます。
なぜ初心者がこのエラーで詰まりやすいのか
-
Dim ws As Worksheetと書いたので安心してしまう -
「Worksheet型だから使えるはず」と思ってしまう
-
Setが必要だと知らない or 忘れる
見た目では間違っていないように見えるのが最大の罠です。
ChatGPTに投げたプロンプト
エラーメッセージとコードをそのまま貼り付けました。
以下のExcel VBAコードで
「実行時エラー '91'(オブジェクト変数または With ブロック変数が設定されていません)」が発生します。
原因と修正方法を、初心者にも分かるように教えてください。
Sub ErrorSample()
Dim ws As Worksheet
ws.Range("A1").Value = "テスト"
End Sub
ポイント
-
エラーメッセージを正確に貼る
-
コード全文を省略しない
-
「初心者にも分かるように」と明記
ChatGPTから返ってきた回答
このエラーは、オブジェクト変数が正しく設定されていない状態で使用されているときに発生します。
今回のコードでは、次の行が原因です。
エラーの原因
ws は Worksheet 型の変数として宣言されていますが、
この時点では、どのシートを指しているのかがまだ決まっていません。
VBAでは、オブジェクト型の変数を使う前に、必ず Set 文を使って、実際のオブジェクトを代入する必要があります。
修正方法
例えば、「Sheet1」を操作したい場合は、次のように Set 文を追加してください。
このように Set ws = Worksheets("Sheet1") を追加することで、ws が正しくシートを参照できるようになり、エラーは解消されます。
補足(初心者向け説明)
-
Dimは「箱を用意する」だけ -
Setは「中身(実体)を入れる」 -
オブジェクト変数は Setしないと使えない
と覚えると分かりやすいです。
修正後のコード(完成形)
これだけで、実行時エラー 91 は完全に解消します。
実際に使って分かったこと
-
エラーメッセージをそのまま貼ると精度が高い
-
コード全文を出すと的外れな回答が減る
-
人に聞くより圧倒的に気が楽
-
「なぜエラーが起きたか」まで理解できる
まとめ
ChatGPTは Excel VBAのエラー解決に非常に強いです。
-
初心者にも分かる説明
-
原因 → 修正方法 → 理由の流れが明確
-
そのまま学習にも使える
VBAのエラーで詰まったら、まずはエラーメッセージとコードをそのままChatGPTに貼る。
これだけで、解決までの時間が大きく短縮されます。
リンク
ChatGPTでExcel VBAマクロを自動生成してみた|初心者でも使える実践手順
Excel VBAのエラー修正をChatGPTに頼んだら原因が一発で分かった話