ここまで紹介してきた「条件一致セル処理」「複数シート一括処理」「配列高速処理」を クラスモジュール化して再利用可能にする 例を示します。クラス化することで、共通処理をひとまとめにして、プロジェクト全体で使い回せるようになります。
クラスモジュール clsCellProcessor の例
1. クラスモジュールのコード
' clsCellProcessor クラスモジュール
Option Explicit
Private pTargetRange As Range
' 対象範囲を設定
Public Property Set TargetRange(rng As Range)
Set pTargetRange = rng
End Property
' 条件一致セルを赤枠にする
Public Sub HighlightZero()
Dim c As Range
For Each c In pTargetRange
If c.Value = 0 Then
c.BorderAround ColorIndex:=3, Weight:=xlMedium
End If
Next c
End Sub
' 背景色が黄色のセルをクリア
Public Sub ClearYellow()
Dim c As Range
For Each c In pTargetRange
If c.Interior.Color = vbYellow Then
c.ClearContents
End If
Next c
End Sub
' 配列で高速変換(例:NG→OK)
Public Sub ReplaceNG()
Dim arr As Variant
Dim i As Long
arr = pTargetRange.Value
For i = 1 To UBound(arr, 1)
If arr(i, 1) = "NG" Then
arr(i, 1) = "OK"
End If
Next i
pTargetRange.Value = arr
End Sub
VB2. 標準モジュールからの呼び出し例
Sub 実務処理例()
Dim ws As Worksheet
Dim proc As clsCellProcessor
' クラスのインスタンス生成
Set proc = New clsCellProcessor
' 各シートのC列を対象に「金額ゼロセル赤枠」
For Each ws In ThisWorkbook.Worksheets
proc.TargetRange = ws.Range("C2:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row)
proc.HighlightZero
Next ws
' ActiveSheetのB列を対象に「NG→OK」変換
proc.TargetRange = ActiveSheet.Range("B2:B1000")
proc.ReplaceNG
End Sub
VB応用パターン
- 複数シート一括処理 → 標準モジュール側でシートをループし、クラスに渡す
- 条件ごとにメソッド化 →
HighlightZero,ClearYellow,ReplaceNGのように分ける - 柔軟な拡張 → 新しい条件処理を追加するだけで再利用可能
クラス化のメリット
- 再利用性:同じ処理を複数プロジェクトで使い回せる
- 保守性:条件処理をクラスに集約 → 修正は一箇所で済む
- 可読性:標準モジュール側は「何をするか」だけ書けるのでスッキリ
練習課題
clsCellProcessorに「背景色が赤のセルだけを削除」メソッドを追加してみる- 「複数列をまとめて配列処理する」メソッドを追加してみる
- 「複数シートの売上列を合計して返す」メソッドを追加してみる
こうしたクラスモジュール化を進めると、実務で超使える「離れたセル × 自動化」パターンを再利用可能なライブラリ化できます。

