ここまで作った clsCellProcessor を「イベント駆動型」に拡張して、Excelブックを開いた瞬間に自動実行される仕組みを組み込みましょう。
手順概要
- クラスモジュール(clsCellProcessor)はそのまま利用
- ThisWorkbook モジュールに
Workbook_Openイベントを記述 Workbook_Open内でクラスを呼び出して処理を自動実行
1. クラスモジュール(clsCellProcessor)
(前回の例をそのまま利用)
' 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
VB2. ThisWorkbook モジュールにイベントを追加
Private Sub Workbook_Open()
Dim ws As Worksheet
Dim proc As clsCellProcessor
Set proc = New clsCellProcessor
' 例1: 全シートの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
' 例2: アクティブシートのB列を対象に「NG→OK」変換
proc.TargetRange = ActiveSheet.Range("B2:B1000")
proc.ReplaceNG
End Sub
VB応用パターン
- Workbook_Open → ブックを開いた瞬間に処理開始
- Workbook_BeforeClose → 閉じる前に自動処理(例:ログ保存)
- Worksheet_Change → セルが変更されたら自動処理
実務での使い方
- 毎回ブックを開いた瞬間に「エラーチェック」「初期化」「集計」を自動実行
- 定期的な監査や入力チェックを人手なしで走らせる
- クラスに処理を集約しておけば、イベント側は「呼び出すだけ」でシンプル
練習課題
Workbook_Openで「全シートの売上列を合計してMasterシートに出力」する処理を追加Workbook_BeforeCloseで「更新ログをテキストファイルに保存」する処理を追加Worksheet_Changeで「入力セルがNGなら自動で赤枠を付ける」処理を追加
こうして クラス × イベント駆動型 を組み合わせると、Excelブックが「開いた瞬間に自動チェック・自動修正」してくれる、まさに 実務で超使える自動化フレームワークになります。

