スポンサーリンク
これまでExcelマクロを使った仕入管理システムについて記述してきました。今回はその最終章としてVBAでBookを閉じる処理(システムを終了する)処理について紹介します。
通常の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
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のアプリケーション自体を終了します。
ブック(システム)を終了する処理を紹介しました。是非参考にしてみてください。