構文
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のみ覚える形で問題ありません。
コメント