Excel VBA | 実務で超使う VBA 自動化パターン

Excel VBA VBA
スポンサーリンク

「実務で超使う VBA 自動化パターン」を整理してみます。現場でよく使われるのは 繰り返し作業の自動化・条件付き処理・複数シート/ブックの一括処理・配列で爆速処理 です。以下に代表的なパターンをまとめます。


実務で超使う VBA 自動化パターン集

1️⃣ 条件一致セルだけ自動処理

  • 金額が0のセルを赤枠
Sub HighlightZeroCells()
    Dim ws As Worksheet, rng As Range, c As Range
    For Each ws In ThisWorkbook.Worksheets
        Set rng = ws.Range("C2:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row)
        For Each c In rng
            If c.Value = 0 Then c.BorderAround ColorIndex:=3, Weight:=xlMedium
        Next c
    Next ws
End Sub
VB
  • 背景色が黄色のセルをクリア
Sub ClearYellowCells()
    Dim ws As Worksheet, c As Range
    For Each ws In ThisWorkbook.Worksheets
        For Each c In ws.UsedRange
            If c.Interior.Color = vbYellow Then c.ClearContents
        Next c
    Next ws
End Sub
VB

2️⃣ 複数シート × 複数列を一括処理

  • 全シートの売上列を集計
Sub SumSalesAcrossSheets()
    Dim ws As Worksheet, total As Double
    For Each ws In ThisWorkbook.Worksheets
        total = total + Application.Sum(ws.Range("D2:D" & ws.Cells(ws.Rows.Count, "D").End(xlUp).Row))
    Next ws
    Sheets("Master").Range("B1").Value = total
End Sub
VB
  • 全部のシートの A1・B1・C1 を初期化
Sub ResetHeaders()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Range("A1:C1").ClearContents
    Next ws
End Sub
VB

3️⃣ 配列で爆速処理

  • NG → OK に一括変換
Sub ReplaceNGWithOK()
    Dim ws As Worksheet, rng As Range, arr As Variant
    Dim i As Long
    
    Set ws = ActiveSheet
    Set rng = ws.Range("B2:B1000")
    arr = rng.Value
    
    For i = 1 To UBound(arr, 1)
        If arr(i, 1) = "NG" Then arr(i, 1) = "OK"
    Next i
    
    rng.Value = arr
End Sub
VB

4️⃣ Union / Areas で離れた範囲をまとめて処理

Sub UnionExample()
    Dim ws As Worksheet, rng1 As Range, rng2 As Range, target As Range
    Set ws = ActiveSheet
    Set rng1 = ws.Range("A1:A10")
    Set rng2 = ws.Range("C1:C10")
    Set target = Union(rng1, rng2)
    target.Interior.Color = vbYellow
End Sub
VB

5️⃣ イベント駆動型(Workbook_Open)

Private Sub Workbook_Open()
    Call HighlightZeroCells
    Call ReplaceNGWithOK
End Sub
VB

👉 ブックを開いた瞬間に自動チェック・修正が走る。


実務での使い方

  • 入力チェック(ゼロ・NG・空白セル検出)
  • 集計・初期化(複数シートの売上集計、ヘッダー初期化)
  • 高速変換(配列でまとめて置換)
  • イベント駆動(開いた瞬間に自動処理)

練習課題

  1. 全シートの「A列非空セル」を集約して1枚のシートにまとめるコードを書く
  2. 背景色が赤のセルだけ削除するコードを作る
  3. Workbook_Open で「Configシートの設定値」に応じて処理を切り替えるコードを作る

こうしたパターンを組み合わせると、実務で超使える VBA 自動化フレームワークが完成します。

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