VBAを学び始めたけど、モジュールの意味がわからない・・・
モジュールの意味や種類を詳しく知りたいな・・・
できれば、意味だけじゃなく使い方も知りたい・・・
VBAを学び始めたときに悩む概念の一つに、モジュールがあります。モジュールの意味がよくわからず学習を進めてしまうと、、、わからないことを調べたときに言葉の意味でつまづいてしまうため、意味を覚えておくことがおすすめです。
こんにちは!フリーランスエンジニア兼テックライターのワキザカです。
この記事では、VBAのモジュールの意味・種類・使い方について解説します!
また、最後にモジュールと密接にかかわるプロシージャについても解説しているので、ぜひ最後まで読んでみてくださいね!
この記事はこんな人のために書きました。
- VBAのモジュールの意味・種類・使い方を知りたい人
- VBAのモジュールの理解を深めたい人
VBAのモジュールとは?
最初に、VBAのモジュールについて解説します。
モジュールとは、コードを書くための場所のことです。モジュールの中でVBAを書き、マクロを作ります。
種類については以降で詳しく解説しますが、例えば次のように「Calc_Mdl」という名前のモジュールの中に、「2つの値を合計するマクロ」「2つの値を積算するマクロ」を作ることができます。
「モジュールという大きな箱の中にVBAを書き、マクロを作っていく」とまずはざっくり覚えておくことがおすすめです!
次に、VBAのモジュールの種類について解説していきます。VBAのエディタVBEを使って詳しく解説していきますので、まだVBAを一度も書いたことがない場合は、先に以下を見て簡単なVBAを作ってみることがおすすめです!
VBAのモジュールの種類
それでは、VBAのモジュールの種類について解説します。
VBAには、大きくわけて以下4つのモジュールがあります。
■VBAのモジュールの種類
- ブックモジュール
- シートモジュール
- フォームモジュール
- 標準モジュール
それぞれ詳しく解説しますね。
ブックモジュール・シートモジュール
まず、ブックモジュール・シートモジュールについて解説します。
ブックモジュールとシートモジュールは、ブックレベルで全体を操作する時、シートレベルで操作する時などにそれぞれ書く場所のことです。
たとえば、「ブックを開いたとき」「ブックを保存したとき」に処理を書きたいときは、ブックモジュールに書きます。「ブックを開いたときに、別のファイルのデータを読み込む」のような処理を作ることができます。
「セルの値を変更したとき」「シートを追加したとき」に処理を書きたいときは、シートモジュールに書きます。「必須項目のA1セルの値が空になった時だけ、メッセージを表示する」のような処理を作ることができます。
このように、ブック単位・シート単位でVBAのコードを書く場所がブックモジュール・シートモジュールです。
フォームモジュール
次に、フォームモジュールについて解説します。
フォームモジュールはVBAで画面を作るときに使う、ユーザーフォームについているコードを書く場所のことです。VBAでは、つぎのような画面を使って処理を作ることができます。
「登録ボタンをクリックしたときの処理」「クリアボタンをクリックしたときの処理」など、アプリの機能を作るための処理を作ることができます。
ちなみに、ユーザーフォームの作り方配下で解説しています。詳しく知りたい方は、見てみてくださいね!
標準モジュール
次に、標準モジュールについて解説します。
標準モジュールは、自分で処理を作るとき作るモジュールの1つです。ブックモジュール・シートモジュール・フォームモジュールのように、何かが起こった時(シート追加、セルの値変更、ボタンクリック)以外に処理を作りたいときに使うモジュールです。
Excelの操作であればほとんど標準モジュールで作ることができますが、具体的には以下のような処理を作ることができます。
■標準モジュールで作れる処理の例
- セルの値をコピペする処理
- グラフを自動で作成する処理
- レポートを自動で作成する処理
新しく処理を作るときは標準モジュールを作るのが基本です。標準モジュールを使ってマクロを作ったことがない方は、以下を見てみてくださいね!
クラスモジュール
次に、クラスモジュールについて解説します。
クラスモジュールは、標準モジュールと同じく自分で処理を作れるモジュールです。標準モジュールはどこからでも作った処理を呼び出せますが、クラスモジュールはクラスを宣言してからでないと使えないことが特徴です。
これだけ聞くと標準モジュールよりも使いづらいと思う方もいるかもしれませんが、クラスモジュールを使ったときだけ使える機能もたくさんあります。
クラスモジュールはクラス宣言が最初に必要な分、「クラス宣言をしたときに行う処理」を作ることができます。「クラスAを宣言したときは、設定シートのA1 ~ A5の値を変数にセットしておく」のような、宣言時の処理が作れるため使いこなすととても便利です。
他にも、消費税など変更すると計算がおかしくなってしまうような値に制限をかけて簡単に変更できないようにしたり、便利な機能がたくさんあります。
クラスモジュールの使い方を詳しく知りたい方は、以下がおすすめです!
VBAでモジュールを使いこなすためのプロシージャとは?
ここまで、モジュールの意味や種類について解説してきました。
次に、モジュールを使いこなすための概念「プロシージャ」について解説します。
プロシージャは、モジュールの中に書く1つの機能のかたまりのことです。「ボタンをクリックしたときの処理」「セルの値をコピペする処理」などですね。
プロシージャには、大きくわけて以下の2つがあります。
■プロシージャの種類
- イベントプロシージャ
- 標準プロシージャ
それぞれ詳しく解説しますね。
イベントプロシージャとは?
まず、イベントプロシージャについて解説します。
イベントプロシージャとは、イベントが起きたときに動く処理のことです。たとえば、「Excelを起動したとき」「セルの値を変更したとき」「ボタンをクリックしたとき」におこる処理です。
イベントプロシージャは、事前に処理の名前が決まっていることが特徴です。たとえば、先ほどの例で言うと、次のように名前が決まっています。
■イベントプロシージャの例
- ブックを起動したとき → Workbook_Open
- セルの値が変更になったとき → Worksheet_Change
- ボタンをクリックしたとき → ボタンのオブジェクト名_Click
そのため、「どんなイベントが起きたときの処理を作りたいか?」を考えて、その名前を使って処理を書いていくことが基本の流れになります。名前がわからない場合は「VBA イベント ブック起動時」のようにググることで、簡単にイベント名を調べることができます。
このように、おこるイベントありきで処理を作っていくのが、イベントプロシージャです。ブックモジュール、シートモジュール、フォームモジュールのみで使えるので、合わせて覚えておくのがおすすめです!
標準プロシージャとは
次に、標準プロシージャについて解説します。
標準プロシージャは、自分で作った処理のことです。たとえば、「セルの値をコピペする処理」「2つの値を合計する処理」などですね。
どのモジュールで書くこともできますが、イベントプロシージャと混合させると処理がわかりづらくなってしまうので、標準モジュール・クラスモジュールのどちらかに書くことがおすすめです。
「Sub マクロ名() ~ End Sub」「Function 関数名() ~ End Function」のように自分で作っていきます。詳しい作り方は以下で解説しているので、ぜひ見てみてくださいね!
まとめ
今回は、VBAのモジュールの意味・種類・使い方について解説しました。
モジュールはVBAを学ぶ上で必須知識なので、違いや使い方を覚えておくことがおすすめです。
最後に解説したプロシージャの意味や使い方まで覚えておくと、学習が加速すると思うので、ぜひ覚えてみてくださいね!