3

Excel シートを開き、VBA エディターを開きました。すぐに表示されるウィンドウで、次のコマンドを実行します。

?Application.EnableEvents = True

False を返します。しかし、新しい Excel シートを開いてコマンドを入力すると、True が返されます。その理由は何でも

4

1 に答える 1

1

コマンドがあなたが思っていることをしているとは思いません。

VBA は = 演算子を代入と比較の両方にオーバーロードし、コンテキストを使用してどちらがどちらであるかを判断することに注意してください。

? 演算子は、「これをそれに設定する」ではなく、「これら2つは同じですか」と尋ねているとVBAに信じ込ませます。

いくつかのコード例:

Application.EnableEvents = False
? Application.EnableEvents
False
? Application.EnableEvents = True
False
? Application.EnableEvents = False
True
? Application.EnableEvents
True
Application.EnableEvents = True
? Application.EnableEvents
True
? Application.EnableEvents = True
True
? Application.EnableEvents = False
False
? Application.Enableevents
True

? のいずれでもないことに注意してください。コマンドは値を変更します。それらはすべて、変数を調整せずに、比較が真かどうかを報告するだけです。フラットな割り当てのみがそれを行います。

于 2015-07-20T17:24:15.783 に答える