[ Excel-VBA ] エクセルブックのクローズ処理をキャンセルする ( Workbook_BeforeClose )

Pocket

ここでは、Workbook_BeforeClose イベントハンドラを使って Excel の終了処理をキャンセルするサンプルスクリプトを掲載しています。

スポンサーリンク

イベントハンドラの作成

イベントハンドラを作成するには、下図のように BeforeClose イベントを選択します。

イベントハンドラの作成

イベントハンドラの作成

エクセルの終了をキャンセルするサンプルスクリプト

Workbook_BeforeClose イベントのパラメータ Cancel に True を設定すると、Excel の終了処理がキャンセルされます。

' Excel ブック終了に呼び出されるハンドラ
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    ' 開いているエクセルブック数を出力する
    Debug.Print Workbooks.Count
    
    If Workbooks.Count = 1 Then
        ' ブック数が1(自身のみ)の場合は、通常通り終了する
        Cancel = False
    Else
        ' 他に開いているブックがある場合は、メッセージを出力し、
        ' キャンセルフラグに True を設定し終了処理を停止する
        MsgBox ("他のブックを閉じてから、このブックを閉じてください")
        Cancel = True
    End If

End Sub
サンプルの注意事項

エクセルの終了をキャンセルすることとは直接関係ありませんが、上記のサンプル注意が必要な部分があります。それは、既に保存されているブックならばブック数としてカウントされますが、新規に開いた保存前のブックはブック数 ( Workbooks.Count ) としてはカウントされない点です。

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *