なぜこう書くのか
Excelマクロの作成をAIに依頼した際にコードが動かない原因は、文法ミスではなく「前提条件の食い違い」であることがほとんどです。「整理して保存するマクロを作って」とだけ伝えると、AIは勝手にシート名を Sheet1 にし、データ開始行を2行目とし、最終行の取得方法を独自に決めてしまいます。実際のファイルとシート名が違ったり見出しが3行目からだったりすると、1行目でエラーが起きて止まります。
課題の段落で「記載していない処理を追加したり順番を変更したりしないこと」と釘を刺しているのはそのためです。AIは親切心から、ソート後に余計な書式設定を加えたり、最後に上書き保存を入れたりしがちです。その1行のせいで、結果を確認する前に元のデータが上書きされてしまいます。シートの構成やファイル パスを冒頭で提示するのも同じ理由です。
コードそのものよりも先にステップの対応リストを出力させることが、このプロンプトの最大のポイントです。リストを見るだけでAIの解釈違いに気づけるため、長いコードをすべて読まなくても「3番は小計ではなく合計です」のように短く軌道修正できます。各ステップにコメントを入れさせれば、後から手順が1つ増えた際にも修正箇所がすぐに見つかります。手作業の手順を箇条書きで並べるだけでも、出力の精度は劇的に上がります。
制約の段落は安全装置です。VBAによって削除された行は「元に戻す(Ctrl+Z)」が効きません。削除や上書きの前に確認ウィンドウを出し、元シートをコピーさせる指示を入れておくことで、初めてマクロを動かす際にも大事なデータを保護できます。貼り付け場所や実行方法までセットで質問しておくことで、コードを受け取った後にどこへ貼り付ければいいか迷う時間もなくなります。
用語が分からなければAha AIで: prompt, chain-of-thought
悪い例との比較
Excelのマクロ作って。金額が0の行を消して取引先ごとに並べ替えて保存するやつ
一見それらしいコードが出力されますが、シート名が Sheet1 に固定され、データが2行目から始まると決め打ちされます。実行すると1行目でエラーが出るか、最悪の場合は別のシートの行が勝手に削除されます。上書き保存までコードに含まれていると取り返しがつかず、どこに貼り付けて実行するのかの説明もないため、初心者だと最初の段階でつまずきます。
バリエーション
マクロなしで実現可能か確認したいとき
以下の作業手順を確認し、VBAマクロを使わずにExcelの標準機能(テーブル機能、ピボットテーブル、Power Query、関数など)だけで完結できる部分があるか教えてください。マクロがどうしても必要な手順のみを抽出し、その理由とともに表形式で整理してください。
""" {{作業の手順}} """
マクロは一度作ると保守運用のコストが発生します。Power Queryなどで代用できる作業なら、そちらの方が長期的なメンテナンスが容易です。
チームメンバーに配布して使ってもらうとき
{{シートの構成}} の構造を持つファイルで以下の作業を実行するVBAコードを作成してください。チームメンバーがそれぞれのファイルで実行できるよう配慮をお願いします。シート名や列の位置が変わる可能性があるため、変更が必要な設定値はコード冒頭に定数としてまとめて定義してください。また、想定と異なるシート構造の場合は処理を中断し、どこが異なっているかを知らせるエラーハンドリング(構造チェック)を入れてください。
""" {{作業の手順}} """
共有マクロで最も危険なのは、他人の異なるファイル構造上でエラーも出ずに誤った処理が走ってしまうことです。冒頭で構造をチェックして安全に停止させます。
モデル別の注意
マクロを初めて実行する前に、必ずファイルのバックアップを取ってください。VBAによって削除された行やデータは「元に戻す」ことができません。また、マクロを保存するにはファイル形式を「.xlsm」にする必要があります。
関連プロンプト
最終更新 2026-09-02 · 誤りがありますか? 知らせる