webdevqa.jp.net

VBA:毎回制御するためにフォーカスを設定する必要があるのはなぜですか?

Access2007データベースを使用して個人のライブラリインベントリシステムを作成しています。コードでは、フォームコントロールの.Textプロパティを参照するときはいつでも、値を変更する場合でも、単にIFステートメントで値をチェックする場合でも、Run-time error '2185': You can't reference a property or method for a control unless the control has the focusでプロンプトが表示されます。

どうしてこれなの?

.Textを設定するのは大したことではありませんが、IFステートメントで値をチェックしているとき、複数の条件をチェックしているときにフォーカスを設定できません。

15

使用する .Value代わりに-最初にフォーカスを設定する必要はありません。ドキュメントから、たとえば TextBox control (emphasis mine)の場合:

コントロールにフォーカスがある間、Textプロパティには現在コントロールにあるテキストデータが含まれます。 Valueプロパティには、コントロール用に最後に保存されたデータが含まれます。フォーカスを別のコントロールに移動すると、コントロールのデータが更新され、Valueプロパティがこの新しい値に設定されます。 コントロールが再びフォーカスを取得するまで、Textプロパティ設定は使用できません。

32
Geoff