次の方法で共有

マクロWorkbook_BeforeCloseで別のエクセルファイルを開いていると実行されない?

Anonymous
2013-07-01T06:40:25+00:00

Excel2010のマクロVBAでWorkbook_BeforeCloseを設定しているのですが、

別のエクセルファイルを開いているとそのマクロが実行されないようです。

構文は下記の通りです。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Dim msg As String

    msg = "「保存」ボタンで終了してください。"

    MsgBox msg, vbExclamation, "確認"

    Cancel = True

End Sub

保存ボタンには入力行に保護をかけてシートの保護をするマクロを設定してあります。

入力行の必ず保護をかけてから保存したいので、右上の×ボタンで閉じられないように

「Workbook_BeforeClose」を使ってみました。

このマクロのエクセルのみ開いている場合は上記のメッセージがでるのですが、

別のエクセルファイルをひとつでも開いていると、右上の×ボタンを押すと

通常通りの「変更を保存しますか?保存/保存しない/キャンセル」がでてきてしまいます。

エクセルを複数開いていても該当ファイルでWorkbook_BeforeCloseが実行されるには

どうしたらいいのでしょうか?

マクロは独学のものですので根本的に何かを勘違いしているかもしれません。

ご存知の方教えてください。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2013-07-01T22:50:17+00:00

当然のことと思われます。

VBAを記述したブックにしか閉じるイベントは発生しないからです。

以下の様にアプリケーションイベントにすれば開いているブックすべてに適用されます。

ThisWorkbookに記述の上、一度保存、再度開いて、マクロを有効にして下さい。

Dim WithEvents app As Application

Private Sub Workbook_Open()

    Set app = Application

End Sub

Private Sub app_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)

    Dim msg As String

    msg = "「保存」ボタンで終了してください。"

    MsgBox msg, vbExclamation, "確認"

    Cancel = True

End Sub

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2013-07-03T04:45:45+00:00

    nombo さま

    回答ありがとうございました。

    教えていただいたとおりに記述しましたらできました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません