ブックが変更されているかどうか確認しメッセージを表示し閉じる:Excelでよく使うフレーズ

ブックが閉じる前に起きるイベントはWorkbook_BeforeCloseです。




Homeに戻る > Excelでよく使うフレーズへ

ここに変更されていれば「保存しますか?」のメッセージを表示させます。

キャンセルの場合は、引数のCancelをTrueにします。

変更の有無はSavedプロパティで判定します。

Savedプロパティの値がTRUEの場合変更がありません。Falseの場合変更があったことを表します。

SavedプロパティをTRUEにすることで、変更がなかったことに設定できます。この場合実際には保存されていないので、SaveやSaveAsを使い保存します。


ブックの変更有無をチェックする

Savedプロパティで変更の有無をチェック、Msgbox で問合せを行い、処理を分岐するVBAです。
ブックの変更有無をチェックする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

実行画面
変更があれば、下のようにメッセージが表示されます。
変更があれば、メッセージが表示される



■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved