【VBA】Workbookイベント一覧|Open・BeforeClose・SheetChangeの使い方と実例

スポンサーリンク

1. Workbookイベントとは何か

Workbookイベントとは、
Excelブック全体に対して発生する操作や状態変化を検知するイベントです。

これらのイベントはすべて、
VBE(Visual Basic Editor)の ThisWorkbook に記述します。

Workbookイベントの特徴は次のとおりです。

  • ブック単位で処理を制御できる
  • 開く・閉じる・保存といった重要な操作を扱える
  • 全シートに共通する動作を管理できる

「このファイルをどう動かすか」を制御するのが、Workbookイベントの役割です。


スポンサーリンク

2. よく使われるWorkbookイベント一覧

Workbookイベントは多数ありますが、
実務で頻繁に使われるものはある程度決まっています。

以下は、特に使用頻度の高い代表的なイベントです。

イベント名発生タイミング主な用途
Workbook_Openブックを開いた直後初期化処理、画面設定
Workbook_BeforeCloseブックを閉じる直前保存確認、終了処理
Workbook_BeforeSave保存処理の直前入力チェック、保存制御
Workbook_NewSheetシート追加時初期レイアウト設定
Workbook_SheetChangeいずれかのシートで変更共通入力チェック
Workbook_SheetActivateシート切替時表示制御

これらは、
ユーザーの操作を起点に自動で発生するイベントです。


スポンサーリンク

3. Open・BeforeClose系イベントの位置づけ

Workbookイベントの中でも、
特に重要なのが「Open」「BeforeClose」「BeforeSave」です。

これらは、

  • ファイルの開始
  • ファイルの終了
  • ファイルの保存

という ライフサイクルの要所 を制御します。

たとえば、

  • 開いた瞬間に初期設定を行う
  • 閉じる前に入力漏れをチェックする
  • 保存前にデータを整形する

といった処理を自然に組み込めます。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    '保存前のチェック処理
End Sub

スポンサーリンク

4. Sheet系Workbookイベントとは

Workbookイベントには、
「Sheet~」で始まるイベントも存在します。

これらは、

  • 特定のシートではなく
  • ブック内のすべてのシートを対象

として動作します。

代表例が次のイベントです。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    'どのシートでもセルが変更されたときの処理
End Sub

このように、

  • 共通ルールを一括管理したい
  • 全シートに同じ制御をかけたい

場合に非常に有効です。

※ Worksheet_Change と Workbook_SheetChange は別物 
 (前者は特定シート、後者は全シート対象)

スポンサーリンク

5. Workbookイベント一覧を把握する重要性

Workbookイベントを一覧で把握しておくと、

  • どのタイミングで処理が書けるか分かる
  • 無理な構成を避けられる
  • 後からの拡張や保守が楽になる

といったメリットがあります。

コメント

タイトルとURLをコピーしました