Excel VBA | 実務で超使う「離れたセル × 自動化パターン」

VBA
スポンサーリンク

ここまで作った clsCellProcessor を「イベント駆動型」に拡張して、Excelブックを開いた瞬間に自動実行される仕組みを組み込みましょう。


手順概要

  1. クラスモジュール(clsCellProcessor)はそのまま利用
  2. ThisWorkbook モジュールWorkbook_Open イベントを記述
  3. 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
VB

2. 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 → セルが変更されたら自動処理

実務での使い方

  • 毎回ブックを開いた瞬間に「エラーチェック」「初期化」「集計」を自動実行
  • 定期的な監査や入力チェックを人手なしで走らせる
  • クラスに処理を集約しておけば、イベント側は「呼び出すだけ」でシンプル

練習課題

  1. Workbook_Open で「全シートの売上列を合計してMasterシートに出力」する処理を追加
  2. Workbook_BeforeClose で「更新ログをテキストファイルに保存」する処理を追加
  3. Worksheet_Change で「入力セルがNGなら自動で赤枠を付ける」処理を追加

こうして クラス × イベント駆動型 を組み合わせると、Excelブックが「開いた瞬間に自動チェック・自動修正」してくれる、まさに 実務で超使える自動化フレームワークになります。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました