Excel VBAのエラー修正をChatGPTに頼んだら原因が一発で分かった話

VBAのエラーは初心者の最大の敵

VBAを書いていると、必ず出てくるのがエラー。

  • 実行時エラー

  • コンパイルエラー

  • 原因が分からない謎の停止

今回は、自分では原因が分からなかったエラーをChatGPTにそのまま投げてみました。


エラーが出たVBAコード

Sub ErrorSample()
    Dim ws As Worksheet
    ws.Range("A1").Value = "テスト"
End Sub

実行すると出るエラー

このマクロを実行すると、次のエラーが表示されます。

実行時エラー '91'
オブジェクト変数または With ブロック変数が設定されていません

Excel VBAのエラー修正をChatGPTに頼んだら原因が一発で分かった話

■■■スポンサーリンク■■■

なぜ初心者がこのエラーで詰まりやすいのか

  • 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.Range("A1").Value = "テスト"

エラーの原因

ws は Worksheet 型の変数として宣言されていますが、

Dim ws As Worksheet

この時点では、どのシートを指しているのかがまだ決まっていません

VBAでは、オブジェクト型の変数を使う前に、必ず Set 文を使って、実際のオブジェクトを代入する必要があります。

修正方法

例えば、「Sheet1」を操作したい場合は、次のように Set 文を追加してください。

Sub ErrorSample()
    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")
    ws.Range("A1").Value = "テスト"
End Sub

このように Set ws = Worksheets("Sheet1") を追加することで、ws が正しくシートを参照できるようになり、エラーは解消されます。


補足(初心者向け説明)

  • Dim は「箱を用意する」だけ

  • Set は「中身(実体)を入れる」

  • オブジェクト変数は Setしないと使えない

と覚えると分かりやすいです。


修正後のコード(完成形)

Sub ErrorSample()
    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")
    ws.Range("A1").Value = "テスト"
End Sub

これだけで、実行時エラー 91 は完全に解消します。


実際に使って分かったこと

  • エラーメッセージをそのまま貼ると精度が高い

  • コード全文を出すと的外れな回答が減る

  • 人に聞くより圧倒的に気が楽

  • 「なぜエラーが起きたか」まで理解できる


まとめ

ChatGPTは Excel VBAのエラー解決に非常に強いです。

  • 初心者にも分かる説明

  • 原因 → 修正方法 → 理由の流れが明確

  • そのまま学習にも使える

VBAのエラーで詰まったら、まずはエラーメッセージとコードをそのままChatGPTに貼る。

これだけで、解決までの時間が大きく短縮されます。

リンク

ChatGPTでExcel VBAマクロを自動生成してみた|初心者でも使える実践手順
Excel VBAのエラー修正をChatGPTに頼んだら原因が一発で分かった話

■■■スポンサーリンク■■■