VBA: Warum muss ich jedes Mal den Fokus auf die Steuerung legen?

7

Ich erstelle ein persönliches Bibliotheksinventar-System mit einer Access 2007-Datenbank. Wenn ich im Code auf die Eigenschaft .Text eines Formularsteuerelements referenziere, ob es den Wert ändert oder einfach den Wert in einer IF-Anweisung überprüft, werde ich mit Run-time error '2185': You can't reference a property or method for a control unless the control has the focus aufgefordert.

Warum ist das?

Zum Setzen von .Text ist das keine große Sache, aber wenn ich den Wert in einer IF-Anweisung überprüfe, kann ich den Fokus nicht setzen, wenn ich mehrere Bedingungen überprüfe.

    
Analytic Lunatic 25.06.2013, 19:47
quelle

1 Antwort

21

Verwenden Sie stattdessen .Value - das erfordert nicht, zuerst den Fokus zu setzen. Aus der Dokumentation, zum Beispiel für das TextBox-Steuerelement (Hervorhebung von mir):

  

Während das Steuerelement den Fokus hat, enthält die Eigenschaft Text den Text   Daten derzeit in der Kontrolle; Die Value-Eigenschaft enthält die letzte   gespeicherte Daten für die Steuerung. Wenn Sie den Fokus auf einen anderen verschieben   Die Daten des Steuerelements werden aktualisiert, und die Value-Eigenschaft wird festgelegt   zu diesem neuen Wert. Die Einstellung für die Texteigenschaft ist dann erst verfügbar   Das Steuerelement erhält den Fokus erneut.

    
Geoff 25.06.2013, 19:53
quelle