私の知る限り、Application.ScreenUpdating = trueの値は、Application.ScreenUpdating=falseが設定されるまで維持されます。しかし、この値の「寿命」は何ですか?呼び出されたプロシージャが開始および終了している間、ワークシートが開いている間ですか、それともですか?
ScreenUpdatingの値を私のニーズと一致させるためのクラスを作成しました。
- Initクラス
- ScreenUpdating=Falseを設定します
- 手順の終了時またはエラーの場合は、値をTrueに復元します。
クラスはこのケースを問題なく処理します。
場合によっては、反対のことが必要になります。
Initクラス
ScreenUpdating=Trueに設定します
手順の終了時またはエラーの場合は、値をFalseに復元します。
ここで問題が発生しています。クラスは値ScreenUpdating=falseを適切に設定しますが、クラスがScreenUpdatingの「実際の」値を取得すると、常にtrueになります。値を変更する可能性のある他の手順やアドインはありません。
上記のポイントを示すテストシートを用意しました。「suCaller」ボタンの上にあるドロップダウンからScreenUpdatingの値を選択します。
- Falseを選択し、ボタンを押します。
- Falseを設定する前の値は、期待どおりTrueです。
- テストデータは、ScreenUpdating new value(False)を示す別の手順から入力されます。
- データ入力後、値はTrueにリセットされます。
- ボタンをもう一度押すと、「実際の」値は期待どおりにTrueになります。
- 何度も実行すれば、値は問題ないはずです。
次に、[True]を選択して、ボタンを押します。
- Trueを設定する前の値は期待どおりにTrueです(これは上からの値です)
- ScreenUpdating new value(True)を示すテストデータが再度入力されます
- データ入力後、値はFalseにリセットされます。
- ボタンをもう一度押すと、「実際の」値はFalseではなくTrueになります。
クラスは復元値を定義するために新しい値を否定するだけなので、結果は存続期間やScreenUpdating値の設定方法について私を混乱させます。
私はクラスで何か間違ったことをしているのですか、それともいくつかの基本的な理論が欠けていますか?
クラスモジュール:ApplicationScreenUpdate
テストモジュール:テスト
テストシート TIA、オスカー。