ここまでの イベント駆動型(Workbook_Open) をさらに拡張して、ユーザーが設定シート(例:Config)に書いた内容を読み込んで処理内容を切り替える仕組みを作りましょう。これで「ユーザーが設定を変えるだけで自動処理の挙動を切り替えられる」柔軟なフレームワークになります。
Configシートの設計例
Config シートに以下のような設定を置くとします:
| 設定項目 | 値 | 説明 |
|---|---|---|
| HighlightZero | TRUE | 金額ゼロセルを赤枠で囲む |
| ReplaceNG | FALSE | NGセルをOKに変換する |
| ClearYellow | TRUE | 背景色が黄色のセルをクリア |
| TargetColumn | C | 処理対象列(例:C列=金額列) |
1. クラスモジュール(clsCellProcessor)
(前回の例に加えて「ClearYellow」も追加済み)
' 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 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
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
VB2. ThisWorkbook モジュール(イベント駆動型)
Private Sub Workbook_Open()
Dim ws As Worksheet
Dim proc As clsCellProcessor
Dim cfg As Worksheet
Dim targetCol As String
Dim doHighlightZero As Boolean, doReplaceNG As Boolean, doClearYellow As Boolean
' Configシートを参照
Set cfg = ThisWorkbook.Sheets("Config")
doHighlightZero = (UCase(cfg.Range("B2").Value) = "TRUE")
doReplaceNG = (UCase(cfg.Range("B3").Value) = "TRUE")
doClearYellow = (UCase(cfg.Range("B4").Value) = "TRUE")
targetCol = cfg.Range("B5").Value
Set proc = New clsCellProcessor
' 全シートに対して処理
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Config" Then
proc.TargetRange = ws.Range(targetCol & "2:" & targetCol & ws.Cells(ws.Rows.Count, targetCol).End(xlUp).Row)
If doHighlightZero Then proc.HighlightZero
If doReplaceNG Then proc.ReplaceNG
If doClearYellow Then proc.ClearYellow
End If
Next ws
End Sub
VB動作イメージ
- ブックを開いた瞬間に
Workbook_Openが走る Configシートの設定値を読み込む- TRUE/FALSE に応じて処理を切り替える
- 対象列もユーザーが自由に変更可能
実務でのメリット
- ユーザーが設定を変えるだけで挙動を切り替え可能
- コード修正不要 → 運用現場で柔軟に対応できる
- 複数処理を組み合わせ可能 → TRUE/FALSE の組み合わせで自在に制御
練習課題
- Configシートに「対象シート名」を追加して、特定シートだけ処理するように拡張
- Configシートに「処理開始行・終了行」を追加して範囲を制御
- Configシートに「処理モード(例:CheckOnly / Fix)」を追加して、チェックだけ or 修正までを切り替える
こうして クラス × イベント駆動 × Configシート を組み合わせると、ユーザーが設定を変えるだけで自動処理の挙動を自在に切り替えられる、まさに 実務で超使える自動化フレームワークになります。

