✅ この記事でわかること
- VBAにおけるクラスモジュールの基本構造
- オブジェクト指向的な設計の考え方
- クラスを使った実践的なサンプルコード
- 業務で役立つVBAスキルへの応用方法
はじめに|VBAにも「オブジェクト指向」があるって知ってた?
VBAといえば、マクロ記録やモジュールにコードを並べていく「手続き型」のイメージが強いかもしれません。
しかし、「クラスモジュール」を使えば、VBAでもオブジェクト指向的な設計が可能です。
「コードが複雑になってきた」
「他人にも使いやすい仕組みにしたい」
「保守性の高いコードを書きたい」
そんな中級者の悩みを解決するのが、クラスモジュールです。
クラスモジュールとは?|1分で理解する基礎知識
✅ 通常のモジュールとの違い
種類 | 目的 | 特徴 |
---|---|---|
標準モジュール | 手続き・関数をまとめる | グローバルに使える。手続き型の基本。 |
クラスモジュール | オブジェクトを定義する設計図 | 自作のデータ構造や振る舞いをまとめられる |
✅ オブジェクトとして使えるようになる
クラスモジュールに定義したプロパティやメソッドを元に、
自分だけの「オブジェクト(実体)」を Set
文で生成できるようになります。
Dim emp As New Employee
emp.Name = "田中"
emp.ShowInfo
実例|社員クラスを作ってみよう
以下は、社員情報を管理するクラスの例です。
1. クラスモジュール(名前: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
' IDの設定と取得
Public Property Let ID(value As Long)
pID = value
End Property
Public Property Get ID() As Long
ID = pID
End Property
' メソッド
Public Sub ShowInfo()
MsgBox "社員ID: " & pID & vbCrLf & "名前: " & pName
End Sub
2. 呼び出し元(標準モジュール)
Sub TestEmployee()
Dim emp As New Employee
emp.ID = 1001
emp.Name = "山本一郎"
emp.ShowInfo
End Sub
クラスモジュールを使うメリット
🔹1. コードが整理され、保守性アップ
- データと処理をセットで管理できる
- 他のプロジェクトにも流用しやすい
🔹2. 複雑な構造もスッキリ管理
- 社員 → 部署 → 組織 といった階層構造もクラスで表現可能
🔹3. 他人が読んでもわかりやすい
- 「社員」「商品」「受注」など、ドメインごとにクラス化することで直感的になる
クラス活用の一歩先へ|Collectionとの組み合わせ
複数オブジェクトを扱うときは、Collection
とセットにすると便利です。
Sub TestEmployees()
Dim empList As New Collection
Dim emp As Employee
Dim i As Integer
For i = 1 To 3
Set emp = New Employee
emp.ID = 1000 + i
emp.Name = "社員" & i
empList.Add emp
Next i
' 全員の情報を表示
For Each emp In empList
emp.ShowInfo
Next emp
End Sub
まとめ|クラスモジュールは中級者からの必須スキル!
✅ クラスモジュールを使うことで、VBAでも「オブジェクト指向」的な設計が可能に
✅ 保守性・再利用性の高いコードが書ける
✅ 実務での応用が効き、スキルアピールにも有利
関連リンク|スキルを伸ばして年収アップを目指すなら
📌 【年収100万円アップも狙える】ITエンジニア特化の転職なら「TechClipsエージェント」がおすすめな理由
📌 【年収1,000万円も狙える!?】20代〜30代エンジニア必見!ハイクラス転職でキャリアを一気に加速させる方法