【Excel VBAコーディングテクニック】コードの可読性を劇的に上げる設計ルール2選 ― 保守性・拡張性を意識した書き方 ―
- yuji fukami
- 1月5日
- 読了時間: 4分

Excel VBAで保守しやすいコードを書く重要性
Excel VBAでコードを書いていると、
「とりあえず動くマクロ」は比較的簡単に作ることができます。
しかし、
数週間後・数か月後にそのコードを読み返したとき、
あるいは機能追加や修正を行う場面になると、
「どこに何が書いてあるのか分からない」
「読むのに時間がかかる」
と感じた経験は少なくありません。
この記事では、
VBAを使った開発を続ける中で、保守しやすいコードを書く上で
特に効果を実感している、
・コードの可読性
・保守性
・将来的な拡張のしやすさ
を大きく改善し、VBAの保守性が高いコードを実現するための
設計ルールを2つ紹介します。
■ 設計ルール①
プロシージャ名はモジュール番号と一致させる
※このルールは、すべてのVBA開発で必須というわけではありません。
小規模なマクロや、
プロシージャ数が数個〜十数個程度の構成であれば、
ここまで厳密な命名ルールは正直不要なケースも多いです。
しかし、
ブックの機能が増え、コード全体の規模が大きくなってきた場合、
このルールは非常に強力に効いてきます。

● 問題が表面化しやすい状況
例えば、次のような状態です。
・プロシージャ数が20〜30以上に増えてきた
・標準モジュールが4〜5個以上に分かれてきた
・Public Sub / Public Function が増え、
他モジュールから呼び出す処理が多くなってきた
この段階になると、
「どのプロシージャを、どこで定義したか」を
名前だけで判断するのが難しくなってきます。
● IntelliSenseで起こりがちな混乱
Publicプロシージャが増えると、
VBAエディタのIntelliSense(入力候補)には
多くのプロシージャ名が表示されるようになります。
このとき、
・どのモジュールに書いた処理なのか
・どの分類の機能なのか
・いま呼び出したい処理はどれか
を瞬時に判断できず、
選定に迷う場面が増えてきます。
● モジュール番号と揃えるという考え方
そこで採用するのが、
・モジュール名に番号を付ける
例:Mod01_入力補助
・プロシージャ名にも同じ番号を付ける
例:S01_***
というルールです。
このようにしておくことで、
IntelliSenseに表示された時点で、
・このプロシージャはどの標準モジュールに属しているか
・そのモジュールはどの分類の機能か
を名前だけで即座に判別できるようになります。
● このルールで得られる実務上のメリット
・コード量が増えても迷いにくくなる
・目的の処理をIntelliSenseから即座に選定できる
・思考を一度リセットし、正しい場所にすぐ戻れる
特に、
機能追加・修正が頻繁に発生するブックでは、
この効果を強く実感しやすくなります。
■ 設計ルール②
変数宣言の「As」を縦に揃える
次に紹介するのは、
コードの見た目と理解速度に大きく影響するポイントです。
VBAでは、複数の変数をまとめて宣言する場面が多くありますが、
As の位置がバラバラな状態になっているケースも少なくありません。

● 揃っていない場合に起こること
・変数の型が視認しづらい
・宣言部分を読むのに余計な時間がかかる
・コード全体が雑然とした印象になる
● As を揃えることで得られる効果
As の位置を揃えるだけで、
・各変数の型を一瞬で把握できる
・宣言部分が「情報の一覧」として読める
・ロジック部分に意識を集中できる
といった効果が得られます。
● 見た目ではなく理解速度の問題
このルールは、
単なるコード整形や好みの問題ではありません。
・変数の役割を素早く把握できる
・処理の流れを追いやすくなる
・読み手の負担を減らせる
という点で、
可読性=理解のしやすさを直接的に高める工夫です。
■ この2つはテクニックではなく設計の考え方
今回紹介した2つのルールは、
難しい文法や特殊なテクニックではありません。
しかし、
コードを「一時的なもの」ではなく
「後から何度も触る資産」として考えると、
非常に大きな差が出てくるポイントです。
■ まとめ
・プロシージャ名とモジュール番号を揃える
・変数宣言の As を縦に揃える
この2つを意識するだけでも、
VBAコードの読みやすさは大きく変わります。
VBAで保守しやすいコードを書くためには、
動作だけでなく、後から読むことを前提にした設計が重要です。
すべてを一度に直す必要はありません。
まずは新しく書くコードから、
少しずつ取り入れてみてください。


