ここに変更されていれば「保存しますか?」のメッセージを表示させます。
キャンセルの場合は、引数のCancelをTrueにします。
変更の有無はSavedプロパティで判定します。
Savedプロパティの値がTRUEの場合変更がありません。Falseの場合変更があったことを表します。
SavedプロパティをTRUEにすることで、変更がなかったことに設定できます。この場合実際には保存されていないので、SaveやSaveAsを使い保存します。
ブックの変更有無をチェックする
Savedプロパティで変更の有無をチェック、Msgbox で問合せを行い、処理を分岐するVBAです。
・ActiveWorkbook.Saved = Falseで変更有になります。
・Cancelの場合は、引数のCancelをTrueにし、プロシージャーを抜けます。
・Noの場合は、Saved = Trueに設定し、変更無しにし終了します。この場合、保存はされません。
・Yesの場合は、Saveメソッドで保存します。
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim lRet As Long
If ActiveWorkbook.Saved = False Then
lRet = MsgBox("変更されています。保存しますか?" _
, vbYesNoCancel, "確認メッセージ")
If lRet = vbCancel Then
Cancel = True
Exit Sub
ElseIf lRet = vbNo Then
ActiveWorkbook.Saved = True
ElseIf lRet = vbYes Then
ActiveWorkbook.Save
End If
End If
End Sub
実行画面
変更があれば、下のようにメッセージが表示されます。