VBAでは標準モジュールだけでも開発は可能ですが、
実務レベルでは「クラス」を使うことでコード品質が大きく向上します。
本記事では、なぜクラスを使うのかを以下の観点から解説します。
- 再利用性
- 保守性
- 構造化
あわせて、クラスの基本的な書き方と使い方も紹介します。
目次
1. クラスとは何か(関係性のイメージ)
クラスとは、**データ(プロパティ)と処理をまとめた“設計図”**です。
例えば「ユーザー」を表す場合:
- 名前(Name)
- 年齢(Age)
といった情報を1つのまとまりとして扱います。
■ クラス定義(例:clsUser)
'クラス名:clsUser
Option Explicit
Private pName As String
Private pAge As LongPublic
Property Let Name(ByVal value As String)
pName = Trim(value)
End Property
Public Property Get Name() As String
Name = pName
End Property
Public Property Let Age(ByVal value As Long)
pAge = value
End Property
Public Property Get Age() As Long
Age = pAge
End Property
■ 利用側(呼び出し側)
Dim user As clsUser
Set user = New clsUser
user.Name = "田中"
user.Age = 30
👉 「clsUser(設計図)」から「user(実体)」を作って使うイメージ
2. 再利用性が高まる理由
■ クラスなしの場合(再利用しづらい)
Dim name As String
name = "田中"
name = Trim(name)
name = UCase(name)
👉 同じ処理を別の場所でも書く必要がある
■ クラスありの場合(再利用できる)
user.Name = "田中"
👉 クラス内に処理をまとめておけば、どこでも同じように使える
■ メリットまとめ
- ① 同じコードを書かなくてよい
- ② 修正箇所が1箇所にまとまる
- ③ 他の処理でも流用できる
3. 保守性が向上する理由
■ クラスなしの場合
name = Trim(name)
name = UCase(name)
👉 同じ処理が複数箇所にあると修正漏れが発生
■ クラスありの場合
Public Property Let Name(ByVal value As String)
pName = UCase(Trim(value))
End Property
👉 修正はクラス内だけでOK
■ メリットまとめ
- ① 修正漏れを防げる
- ② バグの影響範囲が限定される
- ③ 長期的な運用に強い
4. 構造化(設計)ができる理由
■ クラスなし(整理されていない)
Dim name As String
Dim age As Long
name = "田中"
age = 30
👉 データがバラバラで分かりにくい
■ クラスあり(構造化される)
Dim user As clsUser
Set user = New clsUser
user.Name = "田中"
user.Age = 30
👉 「ユーザー」という単位でまとまる
■ メリットまとめ
- ① データをひとまとめにできる
- ② コードの意味が分かりやすい
- ③ 設計として整理される
5. 実務での効果
クラスを使うことで、実務では以下のメリットがあります。
■ ① 拡張に強い
'clsUserに追加
Public Property Let Email(ByVal value As String)
'追加するだけ
End Property
👉 機能追加が簡単
■ ② 仕様変更に強い
👉 クラス内部だけ修正すればOK
■ ③ バグが減る
👉 影響範囲が限定されるため
6. クラスを使わない場合の問題
- 同じ処理があちこちに散らばる
- 修正漏れが発生する
- コードが読みにくくなる
- 機能追加が難しくなる
👉 規模が大きくなるほど破綻しやすい
7. まとめ
- クラスは「データと処理をまとめる設計図」
- 再利用性が向上し、同じコードを書かなくてよくなる
- 保守性が向上し、修正が楽になる
- 構造化によってコードが整理される
👉 実務ではクラスを使うかどうかで品質に大きな差が出る
コメント