
VBAはどのモジュールに書くのかを表や画像から考えてみる
コードの書き方、書く場所、エラー処理について説明していきます。
結論としては「出来るだけ共通部分は切り離して別モジュールに書く」という方法を推奨します。
エラー処理も同じ考えです。
「セルに値が記入されているか?」を確認するような処理はどのプロシージャにも共通で使います。
切り離して別で用意するべきです。
リストと画像で解説
「マクロはどのモジュールに書くのか」というのをパッと見で捉える事が出来ないかと思い色々考えました。
表や画像、例えを用いてイメージ先行でアプローチしてみます。
- ボタンの情報をもとにコードをどこに書くのかを考える
- プロシージャを分割する際に検討するべきこととは
- レストランを例にしてプロシージャの分け方を説明
この3つを画像を使って出来るだけ文字を少なく説明してみようと思います。
視覚である程度内容をイメージしていただけるだけでもコードの書き方が変ります。
関連記事
複数のシート間で行われる処理を事例にしてどのモジュールにコードを書くのかを説明しています。
標準モジュールに書いてるコードを仕事の内容によって分割しています。
実際のコードを使って解説しています。
プロシージャの分け方を考える際に参考にして下さい。

ボタンの情報をもとにコードをどこに書くのかを考える
どこに(どのモジュールに)コードを書くと良いのかを表にしてみました。
ボタンを用意するという行為を基準に色々な要素を掛け算した表です。
- ボタンの数(青)
- 作業内容(緑)
- シートのイベントへの紐付けやボタンのデザイン(黄)
3つの要素を一緒に考えて自分が書いているコードに該当する要素を選んでいただきます。
各要素を選択していただくと白枠の9つのブロックの中から1つのブロックが選択されます。
白枠のブロックにはA~Eまで記号があり計5通りの選択肢があることを示しています。
- A:単一モジュール(シートモジュール)
- シートモジュールのみ
- B:単一モジュール(シートモジュールor標準モジュール)
- シートモジュールか標準モジュールどちらかに寄せる
- C:複数モジュール(シートモジュール×標準モジュール)
- シートモジュールと標準モジュールを組み合わせる
- D:複数モジュール(標準モジュール×標準モジュール)or(シートモジュール×標準モジュール)
- ケースによって標準モジュール同士かCのどちらかを選択
- E:複数モジュール(各シート毎)
- シート毎にプロシージャを用意する

プロシージャを分割する際に検討するべきこととは
上の表の中で複数モジュール(C、D)と結論付けた案件において別に考えます。
プロシージャを分割する際に検討、注意すべきことを書き出してみました。

レストランを例にしてプロシージャの分け方を説明
レストランを例にしてプロシージャの分け方を表現してみました。

ざっと説明すると上段の赤枠は都度コードを用意することになる行為です。
続いて下段の赤枠はどんなオーダーが来ても対応出来る様にするパートです。
オペレーションを共通化しておくと都度コードを書かなくても良いと考える行為です。
では具体的な説明に移ります。料理が提供されるまでは大きく分けて3つの工程があります。
- オーダーを取る
- 料理をつくる
- 提供する
オーダーを取る
オーダーを取るところで席No、人数、料理名が決まります。
来ていただくお客さん次第で要素が変動します。
要するに変数です。このパートはお客さん毎に用意します。
料理をつくる&提供する
後の料理を作る、提供するというパートは別の考え方をします。
最初のオーダーを取るという工程で要素が確定したらその後は変数に従ってやる事を変えるだけです。
芯になる部分(料理を作って提供するという行為)は変更する必要はありません。
どんな料理が出来てもシェフは「料理を作る」という行為は変わりません。
レシピが違うだけです。ここでレシピは前工程から来た変数に依存します。
どの料理が来ても対応出来る条件分岐と繰り返し処理を組んだ指示を与えておけば良いだけです。
エクセルの作業も同じです。
後工程が前工程の変数を吸収できる建付けにしておけば良いです。
都度前工程のコードだけ用意するだけで仕事が流れていきます。
後工程は毎回コードを用意する必要は無いです。
まとめ
画像を使ってコードの書き方について説明してみました。
今回はボタンを用意する事を中心にどのようにモジュールやプロシージャを用意するのか考えてみました。
色々やり方はあるのですが最終的は結論としては「効率良く」立ち回る事を考えてください。
グループでマクロを運用している際はコードを分けるより「引継ぎのしやすさ」も考慮しましょう。
出来るだけ簡単なコードかつ1つのプロシージャでコードを用意した方が良い時があります。
グループで決められたことがある時はその考えに従った方がうまくいく事が多いです。
自我を出すのをグッとこらえて仲良くデータを運用する事を心がけてください。
1人で運用したりグループで使ってもメンテナンスは自分しかしないという環境であれば出来るだけ効率を考えてコードを書きましょう。自身のレベルアップにもつながります。