友人から、「Excelで右上の×ボタンじゃなく、ActiveXコントロールでシートに作ったマクロ用のコマンドボタンでExcelを終了したい」と相談されました。
・シート上のボタンで閉じる。
・右上の×を押した時は「閉じるか」「閉じない」かのメッセージを出す。
・閉じる時に上書き保存する。
という条件だったので、サンプルを作ってみました。
< スポンサーリンク >
コマンドボタンでExcelを終了するサンプル
Excelを開いた時に閉じるかどうかのフラグを作っておいて、閉じる時にそのフラグでCloseのCancelを判断させています。
ThisWorkBookモジュールに、以下のように書き込みます。
Option Explicit
Public flgClose As Boolean
Private Sub Workbook_Open()
'ブックを開くときに閉じるフラグをtrueにする
flgClose = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'閉じるフラグがtrueだったら、閉じるかどうかメッセージを出す
If flgClose = True Then
Dim msg As Integer
msg = MsgBox("ボタンを押してませんが閉じます?", vbYesNo)
'「はい」なら閉じるフラグをfalseにする
If msg = vbYes Then
flgClose = False
End If
End If
'上書き保存
ThisWorkbook.Save
'Cancelがfalseでブックを閉じる
Cancel = flgClose
End Sub
コマンドボタンのコードを以下のように書き込みます。
Private Sub CommandButton1_Click()
'ボタンを押したので、フラグをfalseにする
ThisWorkbook.flgClose = False
'ブックを閉じる
ThisWorkbook.Close
End Sub
右上の×ボタンを押した時はメッセージが出て、コマンドボタンを押した時はメッセージをスルーして終了しました。
こんな記事も書いています