引き継いだExcelマクロを開いた瞬間、画面を埋め尽くすコードに「何これ…」と固まった経験はありませんか? VBAのスパゲッティコードは、読み方さえわかれば怖くありません。
あの日、私もコードの前でフリーズしました
正直に言うと、私自身がこの壁にぶつかった一人です。
前任者が退職し、「この集計マクロ、あとはよろしく」と引き継がれたExcelファイル。恐る恐るVBE(Visual Basic Editor)を開いたら、1,000行超のコードがコメントなしで並んでいました。
🔧 変数名は a, x, tmp1 ——何を指しているのか見当もつかない
💬 上司からは「来週の月次報告に間に合わせて」と催促される
📂 GoTo文があちこちに飛んでいて、処理の流れを追うだけで1日が終わる
あるとき気づいたのは、コードを「全部読もう」としていたこと自体が間違いだったということです。
VBAマクロが「読めない」と感じる本当の原因
スパゲッティコードが読めないのは、あなたのスキル不足ではありません。構造を把握する前に、細部に入り込んでしまうことが原因です。
よくあるパターンはこの3つです。
📌 1行目から順に読み始める:小説のように上から読んでも、VBAの処理順序は追えません
📌 知らない関数で立ち止まる:細部にハマると全体像を見失います
📌 動かして確かめない:コードだけ見ていても、何をやっているマクロなのかわかりません
試行錯誤の末にたどり着いた「読まない」解読法
何本ものスパゲッティコードと格闘する中で、私がたどり着いたのは「全部読まない」というアプローチでした。
📊 Before: 1,000行のコード解読に 丸2日(約16時間)
📊 After: 同規模のコードを 約3時間 で構造把握(約80%短縮)
あの「1行目から順番に読んで頭を抱える時間」が、ほぼ消えました。
具体的には、この5つのステップです。
📌 ステップ1:まず動かす ——ブレークポイントを置いてF8(ステップ実行)で1行ずつ動かし、何が起きるかを観察します。読むより「見る」方が圧倒的に早い。
📌 ステップ2:Subプロシージャの一覧を書き出す ——VBEの左ペインやCtrl+Fで Sub を検索し、処理の塊をリスト化します。全体の地図を先に作るイメージです。
📌 ステップ3:Callの流れだけ追う ——どのSubがどのSubを呼んでいるかを線で結びます。これだけで処理の大きな流れが見えてきます。
📌 ステップ4:変数名をメモで「翻訳」する ——意味不明な x や tmp1 に、推測でいいので「これは行カウンタ」「これはファイルパス」と付箋を貼る感覚で書き込みます。
📌 ステップ5:触らない部分を決める ——全体の8割は「今は関係ない」コードです。修正が必要な箇所だけに集中すると、恐怖感が一気に減ります。
1,000行のコードでも、実際に手を入れるのは50〜100行程度というケースがほとんどです。
すべてのコードを直す必要はありません
ここで大事なのは、スパゲッティコードを「完璧に書き直す」必要はないという判断です。
その後、900社超のサプライヤーデータを扱う業務を任されるようになり、大量のマクロファイルを管理する中で気づいたのは、「直すべきコード」と「動いているなら触らないコード」の線引きが一番重要だということでした。
判断基準はシンプルです。
📌 毎月使うマクロ → 構造を把握して、必要な箇所だけ修正
📌 年に数回だけ動かすマクロ → 動けばOK。ドキュメントだけ残す
📌 もう使われていないマクロ → 無理に読まない。アーカイブして終了
実はココナラでも「前任者が作ったマクロが動かなくなった」というご相談をいただくことがあります。話を聞いてみると、修正が必要な箇所は意外と限られていて、ピンポイントの改修で一気に業務が回り始めるケースがほとんどです。
まとめ
スパゲッティコードを前にしてパニックになりそうなときは、「全部読まなくていい」と自分に言い聞かせてください。
まずはF8キーでステップ実行して、コードを「読む」から「観察する」に切り替える。それだけで景色が変わります。
あの日フリーズしていた私が、今では引き継ぎマクロを見ても「まずSubの一覧を出そう」と冷静に動けるようになりました。あなたもきっと、同じように変わります。
✍️ 筆者プロフィール
大手外資系自動車メーカーのサプライチェーン管理部門で、国内外900社超のサプライヤー管理を担当。Excel VBA・Power Automate・Power Appsを活用した業務改善ツールの開発を得意とし、データ分析から経営報告資料の作成までワンストップで対応しています。
ココナラでも業務改善・Excel VBA・資料作成のご相談を承っています。