- VBAってどこに書くんだ?
- モジュールって何?
- モジュールにいっぱい種類があって、よく分からない…
モジュールはVBAを書くところです。
また、モジュールにはいくつか種類があり、それぞれ特徴があります。
この記事では、以下について解説しています。
- モジュールとは何か
- 各モジュールの特徴
Excelはもちろんのこと、WordやPowerPointだけでなく、AccessやTeamsなどのMicrosoft製品を使うならMicrosoft 365 Personalの利用がおすすめです。
\ExcelやPowerPointなどを使うなら!/
モジュールとは
モジュールとは、VBAを書くところです。
モジュールはVBEから、開いたり、挿入することが出来ます。
VBEについては以下の記事で解説しています。
【VBEとは?】VBAと何が違うの?開き方は?初心者にも分かりやすく解説!
詳しくは別記事で解説しますが、VBAではプロシージャと呼ばれる処理をまとめたものが、モジュールになります。
細かい部品を集めてできた中間素材・部品みたいなものだと思ってください。
VBAのモジュールには以下の5種類あります。
- ブックモジュール
- シートモジュール
- 標準モジュール
- クラスモジュール
- ユーザーフォーム
それぞれ順番に解説していきます。
ブックモジュール
Excelブックに紐づいたモジュールです。
1ブックにつき、1つしか存在しません。
ここにはブックに関するイベントの処理を書きます。
- ブックを開いたとき
- ブックを保存する前
- 印刷する前
- セルをダブルクリックしたとき
といったように、Excel上で特定の操作をした時(イベントが起こった時)のことです。
ブックモジュールとシートモジュールはまとめてオブジェクトモジュールと呼ばれ、その名の通りオブジェクトが無いと機能しないモジュールです。
始めのうちは難しいと思うので、ブックに関するイベントの処理を書く場所という認識で問題ありません。
もちろん、イベント以外の普通の処理も書けますが、不都合なことが多いため書かないほうが無難です。
シートモジュール
シートに紐づいたモジュールです。
1シートにつき、1つしか存在しません。
イベントに関してはブックモジュールとほぼ同じ感覚ですが、こちらはセルやシートに関することに限定されます。
また、シートに紐づいているため挙動が他のモジュールと若干異なります。
例えば…
セルを指定する処理Range("A1")
やCells(1,1)
などは、シート名を明示的に指定しないとこのシートのセルを指定したことになります。
そして、シートに紐づいているため、シートをコピーするとコピー後のシートにもコードが反映され、逆にシートを削除するとコードは完全に無くなります。
ですので、あえてシートモジュールにコードを書いて、コピーして流用するという使い方も出来ます。
基本的に、シートモジュールで出来ることはブックモジュールでもできるので、
シートをコピーして使いたい!
という事でなければあまり使わないモジュールです。
標準モジュール
一番よく使うモジュールです。
汎用的な処理・定数や変数の宣言・専用の処理など、基本的にVBAを書く場所で一番多いのはこのモジュールになります。
また、マクロの記録という実際の操作をVBAにする機能で書かれるコードもこのモジュールです。
ただし、標準モジュールが唯一できないのがイベントです。
ブックモジュールなどでも解説したイベントに関する処理は標準モジュールに書くことが出来ません。
なぜなら、イベントは「操作を行った」という情報を検知する必要がありますが、標準モジュールでは検知できないからです。
基本は標準モジュールに書くことになるので、まずはこのモジュールに書きながらVBAに慣れていきましょう。
クラスモジュール
クラスというオブジェクトを作るためのモジュールです。
これはオブジェクト指向で開発する際によく使いますが、オブジェクト指向自体が初心者さんには難しいため、あまり使わなくなりがちなモジュールです。
VBAでは、オブジェクト指向の要素をフルに活用できるわけではありませんが、プログラミング開発においてオブジェクト指向の考え方は非常に有効です。
ですので、オブジェクト指向での開発をVBAで行う際にぜひとも覚えておきたいモジュールです。
ユーザーフォーム
入力画面のようなフォームを作れるモジュールです。
「ユーザーフォーム」という名前ですが、モジュールの仲間です。
他のモジュールと違い、フォームを作る画面とそのフォームに対する処理を書く画面が存在します。
上が作る画面、下が処理を描く画面
このモジュールでは基本的にフォームにオブジェクト(ボタン・リストなど)を配置→そのオブジェクトに対する処理を書くの流れで作成していきます。
ユーザーフォームにはオブジェクトに対するイベントを書くことが大半で、
- ボタンがクリックされたとき
└一番よく使います。 - リストを選択したとき
- フォームが読み込まれたとき(表示されるとき)
などがあります。
自分好みの画面をカスタマイズできるので入力画面だけでなく、プログレスバー(進捗バー)や監視画面、処理を起動するためのメニュー画面なども作成することが可能です。
使いやすいシステムを作るためには欠かせないモジュールなので使いながら慣れていきましょう。
まとめ|モジュールはVBAを書く場所!まずはその認識でOK!
今回はVBAのモジュールについて+各モジュールの概要について解説しました。
それぞれのモジュールに役割があることを理解していただけたと思いますが、まずは、VBAを書く場所ということだけ覚えていただければOKです。
そして、基本的に「標準モジュール」をよく使うということを頭に入れていただければ大丈夫です。
使いながら少しずつ覚えていきましょう!