構文
Workbook_BeforeClose(Cancel as Boolean)
auto_close()
マクロブックを閉じた時に自動実行されるイベントです。
CancelをTrueにするとブックを閉じる処理をキャンセルします。
Workbook_BeforeCloseイベント/auto_closeイベントのサンプルコード
'■ThisWorkbookに記載必要です。 Private Sub Workbook_BeforeClose() MsgBox "Workbook_Open実行!" '■ブックを閉じるをキャンセルします(ブックを閉じません) Cancel = True End Sub '■標準モジュール(Module1等)に記載必要です。2つ以上のモジュールに記述するとエラーになります Private Sub auto_close() MsgBox "auto_close実行!" End Sub
ブックを閉じるときに以下のようなことに使用が可能です。
- ブックを閉じるときに、自動でブック保存した後、ブックを閉じる
- ブックを閉じるときに、未入力のセルがあったらブックを閉じないようアラートを出す。
Workbook_BeforeCloseとAuto_closeのイベント比較
相違点 | Workbook_BeforeClose | auto_close |
記述するモジュール | ThisWorkbook | 標準モジュール(Module1) |
他ブックに記述があった場合 | 実行される | 実行されない |
実行される順番は以下の通りです。
- Workbook_BeforeClose
- auto_close
※BeforeCloseでCancelされた場合はauto_closeは実行されません。
なぜ似たようなイベントがあるのか?
古い時代のExcelの仕様で、auto_closeイベントが存在していました。
その後、Workbook_BeforeCloseイベントが作成された為、auto_closeイベントは互換性保持の為に存在します。
(昔に作成したエクセルマクロが、今のVerで動作するよう互換性保持する)
特に理由なければ、Workbook_BeforeCloseのみ覚える形で問題ありません。
コメント