- 締切済み
エクセルVBA イベントプロシージャを一時停止する方法を知りたい
エクセルマクロのイベントプロシージャに関する質問です。 ・ブックオープン時に実行するマクロ ・ブックがアクティブになる際に実行するマクロ ・ブックが非アクティブになる際に実行するマクロ この3つがイベントプロシージャとして登録されているブックがあります。 ブックオープン時に実行するマクロが終了するまで、 残りの2個のイベントプロシージャマクロをストップさせておくような方法はないのでしょうか。 理由は、ブックオープンのマクロの中に ブック切り替えのプロセスがあって、そのブックオープンのマクロ実行中に 他の2個のマクロが走ってしまうと都合が悪いのです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- fumufumu_2006
- ベストアンサー率66% (163/245)
オープン時のマクロが終了したかどうかのフラグを用意しては? publicな変数、たとえば openflag を用意する。 ブックオープン時に実行するマクロの最後に、openflag=1 にする。 他のマクロの最初に、 while not openflag=1 'または while openflag<>1 doevents '<-必ず入れてね wend を入れて待たせておく。 というのはどうでしょうか?
- hana-hana3
- ベストアンサー率31% (4940/15541)
Application.EnableEvents = False とすれば、それ以後は全てのイベントが停止します。 実行後はその状態が保持されるので、終了時は True に戻して下さい。
- papayuka
- ベストアンサー率45% (1388/3066)
試してませんが、Open時のブック切替処理を EnableEvents で挟んでみたらどうでしょう? Application.EnableEvents = False 'ブック切り替え処理 Application.EnableEvents = True
お礼
お返事が遅くなりすみませんでしたが、 おっしゃるままに試してみたら、見事に完璧に 解決いたしました。ありがとうございました!
お礼
今回はとてもいい勉強になりました。 ありがとうござました。