関数・メソッド

ブックを閉じる時に処理実行する【Workbook_BeforeClose】【auto_close】【ExcelVBA】

構文

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_BeforeCloseauto_close
記述するモジュールThisWorkbook標準モジュール(Module1)
他ブックに記述があった場合実行される実行されない

実行される順番は以下の通りです。

  1. Workbook_BeforeClose
  2. auto_close

※BeforeCloseでCancelされた場合はauto_closeは実行されません。

なぜ似たようなイベントがあるのか?

古い時代のExcelの仕様で、auto_closeイベントが存在していました。
その後、Workbook_BeforeCloseイベントが作成された為、auto_closeイベントは互換性保持の為に存在します。
(昔に作成したエクセルマクロが、今のVerで動作するよう互換性保持する)

特に理由なければ、Workbook_BeforeCloseのみ覚える形で問題ありません。

関連記事

ブックを開く時に処理実行する【Workbook_Open】【auto_open】【ExcelVBA】

コメント

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