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

VBA
スポンサーリンク

ここまでの Configシート制御 をさらに拡張して「複数の処理パターンをプリセットとして切り替えられる」仕組みを作りましょう。これでユーザーは Config シートで「モード」を選ぶだけで、処理内容を一括切替できます。


Configシートの設計例

Config シートに以下のような設定を置くとします:

設定項目説明
ModePattern1実行するプリセット名
TargetColC処理対象列(例:C列=金額列)

プリセット定義(例)

  • Pattern1 → 金額ゼロセル赤枠 + NG→OK変換
  • Pattern2 → 背景色黄色セルクリア + NG→OK変換
  • Pattern3 → 金額ゼロセル赤枠のみ

1. クラスモジュール(clsCellProcessor)

(前回の HighlightZero / ReplaceNG / ClearYellow を利用)


2. ThisWorkbook モジュール(イベント駆動型)

Private Sub Workbook_Open()
    Dim ws As Worksheet
    Dim proc As clsCellProcessor
    Dim cfg As Worksheet
    Dim targetCol As String
    Dim mode As String
    
    ' Configシートを参照
    Set cfg = ThisWorkbook.Sheets("Config")
    mode = UCase(cfg.Range("B2").Value)       ' Mode
    targetCol = cfg.Range("B3").Value         ' TargetCol
    
    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)
            
            Select Case mode
                Case "PATTERN1"
                    proc.HighlightZero
                    proc.ReplaceNG
                Case "PATTERN2"
                    proc.ClearYellow
                    proc.ReplaceNG
                Case "PATTERN3"
                    proc.HighlightZero
                Case Else
                    MsgBox "ConfigシートのMode設定が不正です: " & mode
            End Select
        End If
    Next ws
End Sub
VB

動作イメージ

  • ブックを開いた瞬間に Workbook_Open が走る
  • Configシートの Mode に応じて処理パターンを切り替え
  • ユーザーは Mode を「Pattern1」「Pattern2」「Pattern3」に変更するだけで挙動を変えられる

実務でのメリット

  • プリセット切替 → ユーザーがモードを選ぶだけで処理内容を変更可能
  • 柔軟性 → 新しいパターンを追加するのも簡単(Select Case に追記するだけ)
  • 運用効率化 → コード修正不要で現場のニーズに対応

練習課題

  1. Pattern4 を追加して「売上列合計をMasterシートに出力」する処理を組み込む
  2. Configシートに「対象シート名リスト」を追加して、特定シートだけ処理するように拡張
  3. Mode を「CheckOnly」「Fix」に分けて、チェックだけ or 修正までを切り替える

こうして クラス × イベント駆動 × Configシート × プリセット切替 を組み合わせると、ユーザーが設定を変えるだけで複数の処理パターンを自在に切り替えられる、まさに 実務で超使える自動化フレームワークになります。

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