プロが教える店舗&オフィスのセキュリティ対策術

エクセルマクロのイベントプロシージャに関する質問です。

・ブックオープン時に実行するマクロ
・ブックがアクティブになる際に実行するマクロ
・ブックが非アクティブになる際に実行するマクロ

この3つがイベントプロシージャとして登録されているブックがあります。

ブックオープン時に実行するマクロが終了するまで、
残りの2個のイベントプロシージャマクロをストップさせておくような方法はないのでしょうか。

理由は、ブックオープンのマクロの中に
ブック切り替えのプロセスがあって、そのブックオープンのマクロ実行中に
他の2個のマクロが走ってしまうと都合が悪いのです。

A 回答 (3件)

オープン時のマクロが終了したかどうかのフラグを用意しては?



publicな変数、たとえば openflag を用意する。

ブックオープン時に実行するマクロの最後に、openflag=1 にする。

他のマクロの最初に、
while not openflag=1 'または while openflag<>1
doevents '<-必ず入れてね
wend
を入れて待たせておく。
というのはどうでしょうか?
    • good
    • 0

Application.EnableEvents = False


とすれば、それ以後は全てのイベントが停止します。
実行後はその状態が保持されるので、終了時は True に戻して下さい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/10/08 00:23

試してませんが、Open時のブック切替処理を EnableEvents で挟んでみたらどうでしょう?



Application.EnableEvents = False
'ブック切り替え処理
Application.EnableEvents = True
    • good
    • 3
この回答へのお礼

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

お礼日時:2007/10/08 00:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!