VBAでは、コードを格納するモジュールにはいくつか種類がありますが、開発で最もよく使うのが 標準モジュール と クラスモジュール です。
両者には役割が大きく異なるため、違いを理解することでコードの整理や設計がしやすくなります。
目次
1. 標準モジュール(Module)とは
標準モジュールは、最も一般的に使われるモジュールであり、プロシージャ(Sub / Function)を自由に記述し、どこからでも呼び出せる という特徴があります。
特徴
- グローバルな処理を書く場所
- 多くのマクロはここに作成される
- Sub や Function をプロジェクト全体から呼び出せる
- 変数や定数を「Public」で宣言すれば、全モジュールから参照できる
イメージ
- どこからでも使える「便利バッグ」
- 共通処理、計算処理、データ加工などの“ロジック”を記述する場所
簡単な例
Public Sub ShowMessage()
MsgBox "標準モジュールからのメッセージ"
End Sub
2. クラスモジュール(Class Module)とは
クラスモジュールは、独自のオブジェクトを作るための設計図 です。
クラスモジュールから生成される“インスタンス”は、それぞれがデータや振る舞いを持つ「モノ(オブジェクト)」として扱われます。
特徴
- 独自のオブジェクト(Class)を作る場所
- プロパティやメソッドを持つ“モノ”を作れる
- 同じクラスから複数のインスタンスを生成可能
- イベント処理(WithEvents)を保持できる
イメージ
- オブジェクトを作るための「設計図」
- Excelのオブジェクトと同じように、自分で「データ+処理」を持った箱を作れる
簡単な例(クラスモジュール:Class1)
Public Message As String
Public Sub Show()
MsgBox Message
End Sub
呼び出し側(標準モジュール):
Sub TestClass()
Dim obj As New Class1 'インスタンス化
obj.Message = "クラスモジュールのインスタンスから表示"
obj.Show
End Sub
3. 違いのまとめ(表形式)
| 項目 | 標準モジュール | クラスモジュール |
|---|---|---|
| 役割 | 処理をまとめる場所 | オブジェクトの設計図を作る場所 |
| コードの呼び出し | どこからでも利用可能 | インスタンス化して利用(Set / New) |
| データの保持 | 基本的に一時的(変数宣言の範囲次第) | インスタンスごとにデータ保持可能 |
| 用途 | 計算・データ処理・共通関数 | オブジェクト構造化、イベント処理、管理単位の作成 |
| 難易度 | 低い(初心者向け) | やや高い(中級者以上) |
コメント