教えて!ExcelVBA!

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

ExcelVBAでブックを閉じる時に処理を実行する方法

構文

構文は以下の通りです。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' 実行するコードをここに記述
End Sub

解説

Workbook_BeforeCloseは、Excelのブックが閉じられる前に実行されるイベントです。このイベントを使用して、ユーザーがブックを閉じる前に特定のアクションを実行することができます。Cancelは、ブックを閉じる事をキャンセルするための引数です。Trueに設定するとブックを閉じません。

プログラミング例

具体的なプログラミング例を紹介します。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim 回答 As Integer
    回答 = MsgBox("ブックを保存しますか?", vbYesNoCancel)
    If 回答 = vbYes Then
        ThisWorkbook.Save
    ElseIf 回答 = vbCancel Then
        Cancel = True
    End If
End Sub

上記のプログラムは、ブックを閉じるときにメッセージボックスを表示します。「はい」を選択するとブックが保存され、「キャンセル」を選択するとブックを閉じません。

まとめ

Workbook_BeforeCloseイベントは、ブックが閉じられる前に特定の処理を実行するために使用されます。Cancel引数を使用することで、ユーザーがブックを閉じるのを防ぐことができます。