ゆんの業務改善ブログ

①生産性向上 ②業務改善 ③自動化 について情報発信しています。VBAプログラムは本当初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。

VBAで複数のモジュールを使いこなす① 標準モジュールを使う

VBAで開発を行う際、標準モジュールをうまく使えば、柔軟な設計ができる作業効率が上がるメンテナンス性が向上する、といったようなメリットがあります。

標準モジュールの使い方をマスターして開発効率の向上と、プログラムの品質向上を目指しましょう!

目次

複数のモジュールを使いこなす方法

標準モジュールの役割

標準モジュールは特定のシートやブックによらない、一般的なプロシジャを記述するのに使います。ブックを開いたり、コピーしたり、メインの自動化の中身を記述するのに使います。

この中に、上述のブックを開いたり、メインの作業をしたりといった内容を細かく分けて、それぞれ別のプロシジャとしてひとつのモジュールに記述していきます。

あとは、この標準モジュールの冒頭などに、このモジュール内のプロシジャを、順に呼び出すためのプロシジャを用意すればOKです。

私の場合は先にプロシジャを次々に呼び出すプロシジャをまず書いてしまいます。そして、未作成のプロシジャのCallステートメントの部分をコメントアウトしておきます。

こうすることによって、その後の作業の見通しが良くなり、進捗もよくわかるようになるからです。

例)「受注データ分析更新モジュール」というモジュールを作ってこのようにその中の手順を順次呼び出すプロシジャを作成する

Sub 受注データ分析()

    Call 受注データ取り込み
    Call 分析フォーマット取り込みして別ブックにコピー
    Call 新分析フォーマットに転記
    Call 折れ線グラフの更新
    Call 保存して閉じる
    
End Sub

複数の標準モジュールを使う

なぜ複数の標準モジュールを使うメリットがあるかと言うと、後述する通りマクロブック自体の機能を拡張するためです。

ひとつの作業郡にひとつのモジュールを割り当てて、そのモジュールの中に細かく分けたプロシジャ
を記述していきます。

作業群ごとに標準モジュールを作成した例。標準モジュールの中のSubプロシジャは基本的に他の標準モジュール内のプロシジャを呼び出さない。(それをしたいならクラスモジュールを使ってオブジェクトを生成するのがおすすめ)

f:id:mutable_yun:20190912200806p:plain
作業群ごとに標準モジュールを作成した例
ちなみにこの例では、営業系のモジュールと生産系のモジュールを見やすくする前に「A_」や「B_」をつけています。


以前、本来なら一つの標準モジュール内でSubプロシジャとして分けるレベルの細かい作業をモジュールに分けている人がいました。

これは下記の理由からおすすめできません。

  • ひとつのマクロブックにひとつの作業郡を割り当てているために似たような作業をまとめてひとつのブックにできません
  • 上の裏返しですが、適切にモジュールを管理すれば、ある程度複数の機能を持ったマクロブックができます
  • 最後に、モジュールをまたぐプロシジャの呼び出しを最少にすることができます

別の標準モジュールにあるプロシジャを呼び出してはいけないと言うことはありません。可能です。

しかし、標準モジュールをまたがずにひとつのモジュールでワンセットの作業が完結すると言うことは、そのモジュールの役割が明確になるため、その役割をモジュール名としてつけたときに、分かりやすくなります。

まさに、「モジュール」という感じがしますね。


モジュール名の付け方のコツ

上ですでに述べましたが、役割をわかるようにつけるのがよいです。

例えば「生産計画立案モジュール」などです。

英語でつけるなら「ProductionPlan」など、英単語をくっつけて単語の先頭の文字のみ大文字にすることが多いようですが、あまり気にしなくてよいと思います。

ただ、ひとつのブックの中では無理のない範囲で同じルールに従った方がいいと思います。日本語なら日本語、英語なら英語、大文字で始めるなら大文字で始める、など。バラバラだったら気持ち悪いですしね。

機能の拡張性をもたせる

既に述べてきた点を別の言い方をしただけです。この様に同じ事を別の言い方をすることで視野が広がったり、別の価値に気づく事があります。

ひとつの標準モジュールでひとつの作業郡が完結すると言うことは、新たに標準モジュールを挿入すれば、新たな機能を付け加える事ができる、と言うことです。

さあ、既に作ったことがあるツールのプロシジャがいろんな標準モジュールに散らばっていたら、早速、作業郡の名前のついたモジュールをひとつ作り、散らばったプロシジャをそこに集めましょう。

それが、正しい標準モジュールを複数作って機能を拡張する第一歩です。

標準モジュールを使う方法まとめ

以上の記事の内容をまとめると下記の通りです。

  • 標準モジュールの役割は処理の流れをコントロールする事
  • 複数の標準モジュールを使う理由は複数の機能を実現するため
  • モジュール名は実装する機能がわかりやすいようにつける
  • 複数モジュールを使うことでひとつのマクロブックに複数の機能を持たせることができる

以上、標準モジュールについてでした。

<関連記事>