VBAでbookを閉じる処理(システム終了)

VBA
スポンサーリンク

これまでExcelマクロを使った仕入管理システムについて記述してきました。今回はその最終章としてVBAでBookを閉じる処理(システムを終了する)処理について紹介します。

Excelマクロ(VBA)で作る管理システム①
マクロ(VBA)で仕入管理システムを作成する方法を紹介しています。使用しているコードやユーザーフォームは仕入だけではなく在庫管理や売上管理、顧客管理など汎用性の高いコードです。是非ご自身の業務に活用してください。
Excelマクロ(VBA)で作る管理システム②
マクロ(VBA)で仕入管理システムを作成する方法の2回目です。使用しているコードやユーザーフォームは仕入だけではなく在庫管理や売上管理、顧客管理など汎用性の高いコードです。是非ご自身の業務に活用してください。
Excelマクロ(VBA)で作る管理システム③
マクロ(VBA)で仕入管理システムを作成する方法の3回目です。ユーザーフォームのリストボックスの詳しい説明やワークシートへのデータの転記方法を解説しています。使用しているコードやユーザーフォームは仕入だけではなく在庫管理や売上管理、顧客管理など汎用性の高いコードです。是非ご自身の業務に活用してください。
Excelマクロ(VBA)で作る管理システム③-1
ユーザーフォームのボタンの移動について解説しています。
Excelマクロ(VBA)で作る管理システム④
今回は、データベースから指定の年月で抽出して、月次の仕入元帳を作成するコードとプロシージャについて解説します。
VBAのリボンの非表示等の画面設定方法
VBAシステム構築の際、ユーザーが自由にシートや列行を追加・削除したり、リボンを触られたりしないような設定(画面設定)の方法について紹介しています。
スポンサーリンク
スポンサーリンク

システムの終了

通常のExcelの終了操作ではなく、「システム終了」ボタン(システム終了のプロシージャ)でExcelを閉じる処理を実行します。

システム終了
Public Flag As Boolean

Sub システム終了()
    Dim メッセージ As VbMsgBoxResult
    メッセージ = MsgBox("商品売上システムを保存しますか?", _
                vbYesNoCancel, "商品売上システムの終了")
    If メッセージ = vbCancel Then
        Exit Sub
    End If
    
    Application.DisplayFormulaBar = True '数式バーを表示
    Application.DisplayStatusBar = True 'ステータスバーを表示
            
    Flag = True
    If メッセージ = vbYes Then
        ThisWorkbook.Close savechanges:=True
    Else
        ThisWorkbook.Close savechanges:=False
    End If
End Sub
  1. 「システム終了」ボタンでメッセージボックスが表示されます。
  2. メッセージ変数(VbMsgBoxResult型)にMsgBox関数の返値が格納されます。
  3. 「キャンセル」を押すとプロシージャ終了。
  4. 「キャンセル」以外の場合、非表示になっている数式バーとステータスバーを表示
  5. ブール型パブリック変数のFlagがTrueになる。
  6. 「保存」か「保存しない」で条件分岐されプロシージャ終了。
スポンサーリンク

Excel操作での終了を禁止する処理

Workbookイベントプロシージャを使用します。Workbookイベントプロシージャは、ブックに対して特定の処理が行われた時に実行されます。

Workbookイベントプロシージャ

「プロジェクトエクスプローラー」ThisWorkbook→「オブジェクト」ボックスのBeforeCloseを選択します。

BeforeClose・・・ブックが閉じられる時に実行されます。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Flag = False Then
        Cancel = True
    ElseIf Workbooks.Count = 1 Then
        Application.Quit
    End If
End Sub

前段の「システム終了」プロシージャでパブリック変数FlagをTrueにする処理がありました。FlagがTrueになっていないと条件分岐でブックを閉じる処理がキャンセルされます。

また、開いているワークブックがこのブック1つならばExcelのアプリケーション自体を終了します。

ExcelVBA学習のおすすめの本5選
筆者オススメの「これは秀逸!」「これは1冊持っとくべき」と思えるExcelVBAの本を紹介しています。ExcelVBAの書籍選びで、どれを選んでよいか迷っておられる方に参考にしていただきたいです。
スポンサーリンク

参考書籍

スポンサーリンク

まとめ

ブック(システム)を終了する処理を紹介しました。是非参考にしてみてください。

コメント

タイトルとURLをコピーしました