• 締切済み

エクセルVBA イベントプロシージャを一時停止する方法を知りたい

エクセルマクロのイベントプロシージャに関する質問です。 ・ブックオープン時に実行するマクロ ・ブックがアクティブになる際に実行するマクロ ・ブックが非アクティブになる際に実行するマクロ この3つがイベントプロシージャとして登録されているブックがあります。 ブックオープン時に実行するマクロが終了するまで、 残りの2個のイベントプロシージャマクロをストップさせておくような方法はないのでしょうか。 理由は、ブックオープンのマクロの中に ブック切り替えのプロセスがあって、そのブックオープンのマクロ実行中に 他の2個のマクロが走ってしまうと都合が悪いのです。

みんなの回答

回答No.3

オープン時のマクロが終了したかどうかのフラグを用意しては? publicな変数、たとえば openflag を用意する。 ブックオープン時に実行するマクロの最後に、openflag=1 にする。 他のマクロの最初に、 while not openflag=1 'または while openflag<>1 doevents '<-必ず入れてね wend を入れて待たせておく。 というのはどうでしょうか?

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

Application.EnableEvents = False とすれば、それ以後は全てのイベントが停止します。 実行後はその状態が保持されるので、終了時は True に戻して下さい。

jin_0130
質問者

お礼

今回はとてもいい勉強になりました。 ありがとうござました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

試してませんが、Open時のブック切替処理を EnableEvents で挟んでみたらどうでしょう? Application.EnableEvents = False 'ブック切り替え処理 Application.EnableEvents = True

jin_0130
質問者

お礼

お返事が遅くなりすみませんでしたが、 おっしゃるままに試してみたら、見事に完璧に 解決いたしました。ありがとうございました!

関連するQ&A