Excel VBA 自作のボタンのみでExcelを閉じる-サンプル

友人から、「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
Excelコード

 

コマンドボタンのコードを以下のように書き込みます。

Private Sub CommandButton1_Click()
    'ボタンを押したので、フラグをfalseにする
    ThisWorkbook.flgClose = False
    'ブックを閉じる
    ThisWorkbook.Close
End Sub
マクロボタン
Excelコード

 

右上の×ボタンを押した時はメッセージが出て、コマンドボタンを押した時はメッセージをスルーして終了しました。

マクロ完成

 

< スポンサーリンク >※広告先のお問い合わせは広告主様にお願いします