Excelのクローズボタン「×」を無効にし、マクロを使ってブックを閉じたい(終了させたい)
ブックを閉じる時に、マクロを使って欲しいことがあります。

progani


[ マクロでの方法 ]
Excelブックを開いた後、メニュ画面の「開始」ボタンを押すことで、セルにフラグを立てる
終了時、メニュ画面の「終了」ボタンを押した時に、セルのフラグを消して終了。
セルにフラグが立っている間は、ブックを閉じようとすると、「終了」ボタンを使わないと終われないことをメッセージして、ブックを閉じる処理をキャンセルする

以下、マクロの例

ブックを開いた直後は、ブックのクローズボタン「×」でもExcelを閉じられるように、セルのフラグ保存セルをクリア。ここでは、A1セル。(間違えてブックを開いた時などは、クローズボタンですぐに閉じたい)

Private Sub Workbook_Open()

    Sheets(1).Unprotect
    Sheets(1).Cells(1).ClearContents

End Sub

メニュの「開始」ボタンを押したタイミングで、フラグの保存セルに、フラグ「1」を代入
「開始」ボタンを押したタイミングでフラグを立てる
ここでは、A1セル

Sub 開始()

    Sheets(1).Unprotect
    Sheets(1).Cells(1).Value = 1

End Sub


ブックのクローズボタン「×」でExcelを閉じようとした時に、フラグが立っている場合は、メッセージを表示して、クローズをキャンセルする。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If Sheets(1).Cells(1).Value = 1 Then
    
        MsgBox "メニューの終了ボタンで終わらせてください。", vbExclamation, "終了"
        Cancel = True
        
        Exit Sub
    
    End If

    Application.Quit

End Sub


メニュの「終了」ボタンでは、フラグをクリアしてからクローズする

Sub 終了処理()
   
    Sheets(1).Unprotect
    Sheets(1).Cells(1).ClearContents

'保存終了
    ThisWorkbook.Close SaveChanges:=True

End Sub