教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA ブック操作】ブックを閉じる時に発生するイベントプロシージャを作成するにはどうすればいいの?教えて!

構文

構文は以下の通りです。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' 実行したい処理を記述します
End Sub

解説

Workbook_BeforeCloseイベントプロシージャは、Excelブックが閉じられる直前に実行されます。つまり、ユーザーがブックを閉じる際に特定の処理を行いたい場合に使用します。引数は以下の内容となります。

引数 内容
Cancel ブックの閉じる動作をキャンセルするかどうかを制御するために使用します。True又はFalseを指定します。初期値はFalseとなります。

プログラミング例

次に、具体的なプログラミング例を見てみましょう。以下の例では、ブックが閉じられるときにメッセージボックスを表示する処理を行います。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' メッセージボックスを表示
    MsgBox "ブックを閉じますか?", vbQuestion + vbYesNo, "確認"
    ' ユーザーが「いいえ」を選択した場合はブックの閉じる動作をキャンセル
    If MsgBoxResult = vbNo Then
        Cancel = True
    End If
End Sub

上記の例では、ブックが閉じられるときに「ブックを閉じますか?」というメッセージボックスが表示されます。ユーザーが「いいえ」を選択した場合は、ブックの閉じる動作がキャンセルされます。

まとめ

Workbook_BeforeCloseイベントプロシージャは、Excelブックが閉じられる直前に実行されるイベントです。このプロシージャを使うことで、ブックの閉じる動作に対して特定の処理を追加することができます。