アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAを勉強中の初心者です。

Excelでプロシージャの中に書かれている次の文は、どういう意味を持っているのですか。

Application.EnableEvents = False

'処理命令文

Application.EnableEvents = True

EnableEventsとは、何を可能にさせると言っているのでしょうか。
= Falseとは、何が違うと言っているのでしょうか。

割り込み禁止で、ここで処理が実行されている間は、他の余分なことは受け付けないと言っているのかと勝手な想像もしていますが、どうでしょうか。

教えて下さい。よろしくお願いします。

A 回答 (2件)

こんにちは。



VBAを勉強中としたら、その辺りは、自然に分かってくるものだから、ちょっと早いかもしれませんね。イベント自体はお分かりになっていますね。後で、マニュアルやヘルプで確認してください。

他のアクションを起動にして、別の動作をするというものです。

Private Sub Worksheet_Change(ByVal Target As Range)

この場合は、Enter を押したときに発生します。

それ自体は、受身でよいのですが、そのマクロ自体が、別のセルを代入したりすると、もうひとつのイベントを発生させてしまい、プロシージャの中で、無限ループに近い形になっています。(ただし、完全な無限ループではないので、1万回程度で止まります。)そこで、その無限ループをとめなくてはならないので、そうした、

Application.EnableEvents = False
ということをします。

逆に、
Application.EnableEvents = True で戻してあげないと、今度は、そのイベント・ドリブン型プロシージャはうんともすんとも言わなくなってしまいます。

>割り込み禁止で、ここで処理が実行されている間は、他の余分なことは受け付けない

その範囲内だけ、イベントを発生させないということです。
厳密には、そういったものには、以下のようなものがあります。
Application.Interactive = False

.
    • good
    • 4
この回答へのお礼

Wendy02さん よくわかりました。ありがとうございました。

お礼日時:2007/05/28 16:15

アプリケーションからのイベントを通知するためのプロパティです。


Falseに設定すると、アプリケーションからのイベントを発生させません。
例えば、アプリケーションは何かしらのアクションに対してイベントを発生させます。
Excelなら、Bookを開いたりセルに何か入力したり、何かキーを押しただけでもイベントは発生します。

概ね質問どおりのことだと考えていいです。
    • good
    • 3
この回答へのお礼

texjoyさん ありがとうございました。

お礼日時:2007/05/28 16:16

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

このQ&Aを見た人はこんなQ&Aも見ています