VBA: Why must I set focus to control every time?

Analytic Lunatic picture Analytic Lunatic · Jun 25, 2013 · Viewed 21.5k times · Source

I am creating a personal Library Inventory system using an Access 2007 database. In code, whenever I reference the .Text property of a form control, whether it be changing the value, or simply checking the value in an IF statement, I get prompted with Run-time error '2185': You can't reference a property or method for a control unless the control has the focus.

Why is this?

For setting the .Text it's not a huge deal, but when I'm checking the value in an IF statement, I can't set the focus when I'm checking multiple conditions.

Answer

Geoff picture Geoff · Jun 25, 2013

Use .Value instead - that doesn't require setting focus first. From the documentation, for example for the TextBox control (emphasis mine):

While the control has the focus, the Text property contains the text data currently in the control; the Value property contains the last saved data for the control. When you move the focus to another control, the control's data is updated, and the Value property is set to this new value. The Text property setting is then unavailable until the control gets the focus again.