MENU

【実務向け】VBAイベントで自動処理!保存時の印刷&入力完了の色分けテクニック

A子さん

Excelで入力や保存のタイミングに“自動で動く仕組み”が欲しいんだけど、ボタン押すのは面倒で…

先輩

「それなら“イベント×VBA”で実現できるかもしれないよ。今日は実務で使える2つの例を紹介しよう

目次

たとえば、「帳票を編集して保存するたびに、印刷されてほしい」といった業務は多くあります。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ThisWorkbook.Sheets("請求書").PrintOut
End Sub

🔍 解説

  • Workbook_BeforeSaveは、保存処理の直前に動きます。
  • PrintOutを使って指定シートを自動印刷
  • 保存先や保存形式に関係なく、印刷されます。

📌設置場所:ThisWorkbook に記述します。

入力が完了したら背景色を変更する(Worksheet_Change)

「この列は記入済みなのかどうか?」を一目で確認できると便利ですよね。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B2:B100")) Is Nothing Then
        If Target.Value <> "" Then
            Target.Interior.Color = RGB(198, 239, 206) ' 薄緑
        Else
            Target.Interior.ColorIndex = xlNone
        End If
    End If
End Sub

🔍 解説

  • Worksheet_Changeは、セルの値が変更されたときに自動発動。
  • Intersectで対象列を限定(ここではB2:B100)。
  • 値が入ったら背景色を設定、空欄になったら元に戻す。

📌設置場所:対象シートのコードモジュールに記述

応用テクニック:複数条件やチェック連携にも使える!

保存時印刷 × 特定条件
 → 印刷の前に「請求番号が空なら印刷しない」など条件追加も可能。

入力完了 × チェックマーク表示
 → 入力完了セルの横に「✓」を自動で表示するなども組み合わせ可能。

実装時の注意点

注意点内容
無限ループ注意Worksheet_Change内でセルを書き換えると再発火します。対策としてApplication.EnableEvents = Falseの使用が有効。
印刷制御の有無Workbook_BeforeSaveで印刷は強制実行なので、ユーザーが驚かないようメッセージ表示を入れても◎
シート保護の影響対象セルが保護されている場合、変更が効かないため要注意。

まとめ:イベント処理で業務の“気づかい”を自動化しよう

VBAのイベント処理は「手動のひと手間」を減らすのに最適

保存時や入力時に“ちょっと便利”な動作を仕込んでおくと業務効率UP

無理に複雑化せず、「1アクション=1処理」の単純化が成功のコツ

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次