質問: "No" End If End Sub ``` 1. AとBのブックを同時に起動させ、Bのブックをアクティブにして右上の閉じるボタンから終了すると、AのBeforeCloseに流れて一連の処理を行った後、BのBeforeCloseに流れてBが閉じる。これの処理をAに流れないようにしたい。 (追記) Aと空白のブック(Excelの新規ブック作成機能で作成したブックに、 Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub のみ記述したもの)で検証(空白のブックをアクティブにしてから右上の閉じるボタンで終了しようとする)を行ったところ、こちらも先にAのBeforeCloseに流れて一連の処理を行った後、空白のブックのBeforeCloseに流れていました。 2. Bと空白のブック(文字どうり新規ブックの作成機能で作成したばかりの何も編集していないブック)を同時に起動させ、空白のブックをアクティブにして右上の閉じるボタンから終了すると、Bのブックだけが終了し、Excel上で終了処理を受け付けない空白のブックが残る。 同様の案件として、空白のブックをアクティブにしてタスクバーからBのブックだけを終了させると、終了処理だけでなくセルの操作も受け付けない空白のブックが残る(Excel上のメニューバーなどは動作する)。 ThisWorkbook.Close Falseの処理に問題があるのかと思い、終了させる前にBをアクティブにするようにしたりIF文と追加して非アクティブ時の挙動について書き足したりしましたが成果無しでした。 1.は他のブックの処理実行時にAの方の処理に向かわないようにする(Aの優先度を下げる?) 2.はBの終了時に他のブックに影響を与えないようにする(少なくともBの終了処理後に他のブックも正常に終了させれるようにしたい、現状Bの終了処理後のブックはタスクマネージャを起動しないと終了できないのでそれの改善) 申し訳ありませんが問題解決へのお力添えをお願いします。
回答: また回答させていただきます。 Excel2003の環境がなく2010での確認です。 回答内容としては前回と同様です。 > > AのBeforeCloseに流れて > > > **B**の方で、`ThisWorkbook.Close`をやると`Workbook_BeforeCloseイベント`が二重に発生するので、やめることをお勧めします。 この二回目のイベントですが、2010の環境では**B**の方に上がります。 2003の環境では、本当に**A**のイベントでしょうか? > > 終了処理を受け付けない空白のブックが残る > > > これも前回の回答通りです。 ブックが複数ある状態では、`Application.DisplayAlerts`が`False`のまま処理を継続しているためです。 前述の`ThisWorkbook.Close`の代わりに`Application.DisplayAlerts=True`としてください。