【VBA】標準モジュールとクラスモジュールの基本的な違い

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)
データの保持基本的に一時的(変数宣言の範囲次第)インスタンスごとにデータ保持可能
用途計算・データ処理・共通関数オブジェクト構造化、イベント処理、管理単位の作成
難易度低い(初心者向け)やや高い(中級者以上)

コメント

タイトルとURLをコピーしました