目次
概要
モジュールに関するVBAのTIPS。
モジュールとは
「モジュール」は、「プロジェクト」の中の構成単位。
- プロジェクト
実行単位の仕組みの「かたまり」。複数個のモジュールをまとめて管理する集合体。
Excelの場合は、1つのワークブックが1つの「プロジェクト」となる。
- モジュール
「プロジェクト」の中の構成単位で、プログラムを管理するための一つの単位。
要は、VBAのコードを書いて保存する場所のことで、ここにプログラム、プロシージャが作られる。
「標準モジュール」、「クラスモジュール」、「シートモジュール」、「ブックモジュール」、「フォームモジュール」の種類がある。
「標準モジュール」のことを単に「モジュール」と呼ぶこともある。
モジュールの大別
オブジェクトにくっついてるモジュール
- 各オブジェクトでのみ使用可能なモジュール。
- Microsoft Excel Objects(ワークシートに付随する「シートモジュール」、ワークブックに付随する「ブックモジュール」)、フォームに付随する“「フォームモジュール」。
- イベントプロシージャ(ユーザーの操作で発生するイベントに対応して実行されるプロシージャ)を使える。
- Publicの宣言が許されていない。
オブジェクトにくっついてないモジュール
- オブジェクトを横断して使用可能な汎用的なモジュール。
- 「標準モジュール」、「クラスモジュール」*1。
- Publicの宣言が可能。
- 標準モジュールに Public な関数を作成すると、他のシートや標準モジュールから呼び出せる。
モジュールの種類
標準モジュール
- プログラムを記述するのに使用するモジュール。
- この標準モジュールを軸にプログラムを作成していくのが基本。
- マクロを作成した場合も、この標準モジュールにプログラムが記録される。
- Publicの宣言が可能。
このため、標準モジュールは、共通のプログラム、グルーバルに使用する変数/定数などを記述する用途に使われることが多い。
クラスモジュール
- 「クラス」と呼ばれるオブジェクトを定義するのに使用するモジュール。
- クラスは型(オブジェクトの設計図)で、型を使って実体化(インスタンス)したものがオブジェクト。
- このモジュールに記述したプログラムは、Newでオブジェクトを生成して初めて使用可能になる。
- クラスには状態を示す値と、処理が含まれるため、状態(値)の違うオブジェクトを複数保持できる。
- オブジェクト指向における三大要素のうち、VBAは、継承*2も多態性も使えないため、クラスを使う場合、カプセル化を意識すればよい。
- すなわち、関連するデータやその操作を一つ(カプセル)にまとめること、必要な情報のみ外部に公開し、不必要なものは非公開として隠蔽することを意識する。
- 今まで、(日本の?)一般的なVBA開発ではあまり使用されていなかった。
- 近年(2020年)は他オブジェクト指向言語を経験した開発者が増え、使用することも増えてきた感がある。
- クラスモジュールを使用せずに標準モジュールだけでもプログラムは作成可能。
- 自作のイベント処理を作るような場合は、クラスモジュールを使うとよい。
フォームモジュール
- 画面(フォーム)のイベントプロシージャや、画面処理に関するプログラムを記述するモジュール。
- 一般的に、その画面に関係のないプログラムは記述しない。
- シートモジュール、フォームモジュールは、シート名/フォーム名をそのまま変数名としてオブジェクトを扱える(Newが不要)ようになっている。
- これはVBAの環境が利便性のために勝手に生成しているのであって、決してオブジェクトの生成が行われていないわけではない。
- シートモジュールをNewした場合、オブジェクトの実体はVBAが生成したオブジェクトと同じになる。
- フォームモジュールをNewした場合はシートモジュールの場合と異なり、実体が別のオブジェクトになる。
Microsoft Excel Objects(シートモジュール、ブックモジュール)
- 開いているExcelブックを構成しているExcelのブックやシートの総称。
- 各ブック・シートを操作したタイミング(イベント)で自動的に実行する処理(イベントプロシージャ)を作成する場合などに利用。
- 各ワークシートは「シートモジュール」、「ThisWorkbook」は「ブックモジュール」と呼ぶ。
モジュールの操作
「標準モジュール」、「クラスモジュール」、「フォームモジュール」の追加・名称変更・削除の方法。
以下は、標準モジュールについて記載しているが、クラス・フォームの操作も名称が違うだけでほぼ同等である。
標準モジュールの追加
- Visual Basic Editorのメニューで[挿入]-[標準モジュール]を選択。
- または、プロジェクト内を右クリックで[挿入]→[標準モジュール]。
- [Alt]→[I]→[M]の順にキー操作でも実行可能。
- 初期名は「Module[n]」。[n]は数字。
標準モジュールの名称変更
- プロパティウインドウで行う。
- 「(オブジェクト名)」を編集。半角全角使用可能。ただし、先頭に数字は使えず、記号はアンダーバー(_)のみ。
標準モジュールの削除
- プロジェクト内の削除したい標準モジュールを右クリック→「XXXの解放」(XXXはモジュール名)。
- [Alt]→[F]→[R]の順にキー操作でも実行可能。
TIPS
別ページの一覧を入れる。
'IT系/VBA/基本/モジュール/' には、下位層のページがありません。
リンク集
重複を恐れないリンク集。
- 標準モジュールとシートモジュールの違い|VBA技術解説
- VBA基本(モジュールとプロシージャ)
- 第15話「モジュールとプロシージャをくわしく知ろう」|VBAとの出会い編|やってみよう!Excel VBAで業務改善!
- Office TANAKA - 今さら聞けないVBA[マクロってどこに書けばいいの?]
- VBA 標準モジュール - Tipsfound
- モジュールについて - 基礎からはじめるVBA
- 1.05 3種類のモジュール - EXCEL-VBA開発講座
- 【Excel VBA】モジュールの基礎知識まとめ | Excelを制する者は人生を制す ~No Excel No Life~
- VBAクラス入門:クラスとは?オブジェクト指向とは?|VBA技術解説
- VBAに登場する意味不明な用語の意味 “モジュール”とか“ステートメント”とか / Excel / VBA: haku1569 Excel でらくらく データ分析!
- 【VBA】モジュール
- Microsoft Excel VBA - クラスモジュールを使ったプログラミングを行う方法
動画
- (日本頭脳チャンネル) 【Excel VBAエキスパート・ベーシック試験 合格講座】③モジュールとプロシージャ - YouTube
- (日本頭脳チャンネル) 【Excel実践の授業】Chapter4-06 マクロ&VBA〈基本編〉 モジュールとは - YouTube
- (エクセル兄さん たてばやし淳) 無料試聴② 「モジュール、プロシージャとは?」VBAエキスパート試験対策講座 - YouTube
- (なんだ!カンタン!Excel塾) Excel塾のエクセルマクロ講座入門編21回 標準モジュールの挿入と解放、オブジェクト、プロパティ、メソッド - YouTube
- (イワステーション岩崎) VBAのクラスモジュールは難しくない 第1回【毎日エクセルVBA】 - YouTube
- (伊川直助) 【Excel VBA】クラスモジュールの進捗状況 オブジェクト指向について - YouTube
- (IT係長) 【Excel|VBA】シートモジュール、ダブルクリックイベント、右クリックイベント★ - YouTube
- (IT係長) 【Excel|VBA】ブックモジュール★ - YouTube
- (Office TANAKA) 【VBA】VBEの使い方 - モジュールを別ファイルにエクスポートしておくと超絶便利だよ - YouTube
- (Office TANAKA) 【VBA】UserForm 完全解説「UserFormとは何か」基本が分からなければ何もできない - YouTube