ここでは、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 ) としてはカウントされない点です。