VBAでクラスモジュールを使いこなす方法と実践例

VBA(Visual Basic for Applications)を使っていて「クラスモジュール」という言葉を見かけたことはありませんか?
標準モジュールは使ったことがあるけれど、クラスモジュールはよく分からない…という方も多いでしょう。

クラスモジュールを使うことで、データと処理を1つのまとまりとして管理でき、プログラムをより整理された形にできます。
この記事では、クラスモジュールの基本から実践的な使い方まで、初心者にも分かりやすく解説します。

VBAでの開発の幅を広げたい方、よりスマートなコードを書きたい方は、ぜひ読み進めてみてください。


クラスモジュールとは何か?

クラスモジュールは、オブジェクト指向的な考え方を取り入れるためのVBAの仕組みです。
簡単に言えば、「データ」と「処理」をひとまとめにしたテンプレートのようなものです。

たとえば、社員を表すクラスを作成すれば、社員名、社員番号などの情報(プロパティ)と、勤務日数の計算や部署移動などの動作(メソッド)を一括で扱うことができます。


クラスモジュールの作成方法

1. クラスモジュールの追加

  1. VBAエディターを開きます(Alt + F11)。
  2. メニューから「挿入」→「クラスモジュール」を選択。
  3. プロパティウィンドウで、クラス名を「Employee」などに変更します。

2. クラスのプロパティを定義する

 Employeeクラスの中身
Private pName As String
Private pID As Long

Public Property Let Name(value As String)
pName = value
End Property

Public Property Get Name() As String
Name = pName
End Property

Public Property Let ID(value As Long)
pID = value
End Property

Public Property Get ID() As Long
ID = pID
End Property

このように、プロパティ(値の入れ物)を定義します。Letは値の代入、Getは値の取得です。


クラスモジュールを使ったオブジェクトの作成と使用

標準モジュールで、先ほど作成したEmployeeクラスを使ってみましょう。

Sub TestClass()
Dim emp As Employee
Set emp = New Employee

emp.Name = "山田太郎"
emp.ID = 1001

MsgBox "社員名:" & emp.Name & vbCrLf & "社員番号:" & emp.ID
End Sub

上記のコードを実行すると、作成したEmployeeオブジェクトに対して、プロパティの値を設定し、メッセージボックスに表示できます。


メソッド(処理)をクラスに追加する

クラスに機能(メソッド)を追加することもできます。たとえば「自己紹介」メソッドを追加します。

Public Function Introduce() As String
Introduce = "こんにちは、私は " & pName & " です。社員番号は " & pID & " です。"
End Function

これを標準モジュールから呼び出すと:

Sub TestIntroduce()
Dim emp As Employee
Set emp = New Employee

emp.Name = "田中花子"
emp.ID = 1002

MsgBox emp.Introduce()
End Sub

結果として、「こんにちは、私は田中花子です。社員番号は1002です。」と表示されます。


クラスモジュールのメリット

クラスモジュールを使うことで、以下のようなメリットがあります:

  • データと処理がセットで管理でき、コードが読みやすくなる
  • 同じ型のオブジェクトを複数作成できる(例:社員リストなど)
  • 保守性・拡張性が向上する
  • 標準モジュールよりも、構造的にプログラムを設計できる

コレクションと組み合わせて使う

複数のオブジェクトを管理したい場合、Collectionと組み合わせるのがおすすめです。

Sub CreateEmployeeList()
Dim empList As New Collection
Dim i As Integer
Dim emp As Employee

For i = 1 To 3
Set emp = New Employee
emp.Name = "社員" & i
emp.ID = 1000 + i
empList.Add emp
Next i

For Each emp In empList
MsgBox emp.Introduce
Next emp
End Sub

このように、社員オブジェクトを複数作成して、順に処理することができます。


クラスモジュールの注意点

  • クラス名は標準モジュールや変数名と重複しないようにしましょう
  • Setキーワードを使ってオブジェクトを代入するのを忘れずに
  • クラスは用途が明確なときに使うと効果的(なんでもかんでもクラスにしない)

まとめ

VBAのクラスモジュールは、プログラムをより構造化して整理するための強力な手段です。
最初は少し取っつきにくく感じるかもしれませんが、慣れてくると「クラスで書いたほうがスッキリする!」と感じる場面が増えてきます。

この記事では、クラスの基本構造、プロパティやメソッドの定義、使い方の例、そして応用まで紹介しました。
日々のVBA作業において、コードの見通しを良くしたいと感じたら、ぜひクラスモジュールの活用を検討してみてください。

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