VBAで開発を行う際、標準モジュールをうまく使えば、柔軟な設計ができる、作業効率が上がる、メンテナンス性が向上する、といったようなメリットがあります。
今回はVBAにおける標準モジュールの役割や使い方について解説します。
目次
複数のモジュールを使いこなす方法
標準モジュールの役割
標準モジュールは特定のシートやブックによらない、一般的なプロシジャを記述するのに使います。より、本質的な書き方をすると、プログラムの流れを記述するのが標準モジュールです。Aと言う手順の次にB列という手順を行うと言うように、行う手順を順に並べていくイメージが標準モジュールの本来的な役割です。この本質を極めるにはオブジェクト指向という考え方が必要となり、VBAの技術の中では高度な分類となってしまいます。
そこで、この記事では標準モジュールはブックを開いたり、コピーしたりといった特定のシートだけで機能する手順ではなく、全体的なプログラムの中身を記述するSubプロシジャやFunctionプロシジャを記述するのに使う場所という位置づけで解説を進めます。
具体的にはある程度の処理のまとまりごとにSubプロシジャやFunctionプロシジャを作成し、そのプロシジャを順に呼び出していくプロシジャを標準モジュールの冒頭に用意すればOKです。
私の場合は先にプロシジャを次々に呼び出すプロシジャをまず書いてしまいます。そして、未作成のプロシジャのCallステートメントの部分をコメントアウトしておきます。
こうすることによって、その後の作業の見通しが良くなり、進捗もよくわかるようになるからです。
例)「受注データ分析更新モジュール」というモジュールを作ってこのようにその中の手順を順次呼び出すプロシジャを作成する
Sub 受注データ分析() Call 受注データ取り込み Call 分析フォーマット取り込みして別ブックにコピー Call 新分析フォーマットに転記 Call 折れ線グラフの更新 Call 保存して閉じる End Sub
複数の標準モジュールを使う
なぜ複数の標準モジュールを使うメリットがあるかと言うと、後述する通りマクロブック自体の機能を拡張するためです。
ひとつの作業郡にひとつのモジュールを割り当てて、そのモジュールの中に細かく分けたプロシジャ
を記述していきます。
作業群ごとに標準モジュールを作成した例。標準モジュールの中のSubプロシジャは基本的に他の標準モジュール内のプロシジャを呼び出さない。(それをしたいならクラスモジュールを使ってオブジェクトを生成するのがおすすめ)ちなみにこの例では、営業系のモジュールと生産系のモジュールを見やすくする前に「A_」や「B_」をつけています。
以前、本来なら一つの標準モジュール内でSubプロシジャとして分けるレベルの細かい作業をモジュールに分けている人がいました。
これは下記の理由からおすすめできません。
- ひとつのマクロブックにひとつの作業郡を割り当てているために似たような作業をまとめてひとつのブックにできません
- 上の裏返しですが、適切にモジュールを管理すれば、ある程度複数の機能を持ったマクロブックができます
- 最後に、モジュールをまたぐプロシジャの呼び出しを最少にすることができます
別の標準モジュールにあるプロシジャを呼び出してはいけないと言うことはありません。可能です。
しかし、標準モジュールをまたがずにひとつのモジュールでワンセットの作業が完結すると言うことは、そのモジュールの役割が明確になるため、その役割をモジュール名としてつけたときに、分かりやすくなります。
まさに、「モジュール」という感じがしますね。
モジュール名の付け方のコツ
上ですでに述べましたが、役割をわかるようにつけるのがよいです。例えば「生産計画立案モジュール」などです。
英語でつけるなら「ProductionPlan」など、英単語をくっつけて単語の先頭の文字のみ大文字にすることが多いようですが、これは慣習的なモノなので、あまりこだわりすぎる必要はありません。しかし、ある程度の一貫性はあった方が見栄えは良区なります。たとえば、日本語なら日本語、英語なら英語、大文字で始めるなら大文字で始める、などと言った具合です。
機能の拡張性をもたせる
ひとつの標準モジュールでひとつの作業郡が完結すると言うことは、新たに標準モジュールを挿入すれば、新たな機能を付け加える事ができる、と言うことです。
このメリットを生かすために、もし既に作ったことがあるツールのプロシジャがいろんな標準モジュールに散らばっていたら、早速、作業郡の名前のついたモジュールをひとつ作り、散らばったプロシジャをそこに集めましょう。正しい標準モジュールを複数作って機能を拡張する第一歩につながっていきます。
ひとつのモジュールにひとつの作業群。これが原則です。
標準モジュールを使う方法まとめ
以上の記事の内容をまとめると下記の通りです。
- 標準モジュールの役割は処理の流れをコントロールする事
- 複数の標準モジュールを使う理由は複数の機能を実現するため
- モジュール名は実装する機能がわかりやすいようにつける
- 複数モジュールを使うことでひとつのマクロブックに複数の機能を持たせることができる
以上、標準モジュールについてでした。標準モジュールの使い方をマスターして開発効率の向上と、プログラムの品質向上を目指しましょう!
<関連記事>
<ゆんの電子書籍>
ゆんの電子書籍はすべてkindle unlimitedで読み放題です!