I have a login form to my database done in Access 2010 and using VBA code. I want to be able to press Enter on txtboxPassword
and automatically execute btnLogin_Click
event. I tried this:
Private Sub txtboxPassword_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
btnLogin_Click
End If
End Sub
What I get is a self-made error saying Password is incorrect. If I debug I see that actually txtPassword
is null
, but I just typed the text in it!
However If I click the Login button with the mouse it works perfect. Why does vba behave like that? How can I do it to make it work?
NOTE I also tried with:
- KeyPress: after I press Enter the focus goes to
btnLogin
(maybe also because the tab order is like that), but thebtnLogin_Click
event is not executed. - KeyUp: same like KeyPress.
On the button you wish to action go to properties 'Other' and set the 'Default' to Yes. Then when you click on enter when in the text box it will action the button.
The buttons in Access have a property called
Default
(on the "Other" property page). If you set it to "Yes" the form calls it automatically, when you press Enter. No need for Key-event handling.There is also a
Cancel
property. If you set it to "Yes" for a button, the form activates it automatically when the user types the Esc-key. Very practical for "Cancel" buttons.KeyPress rather than KeyDown works for me, and calling the _Click sub avoids sending triggers that may fire other events.
to activate KeyCode, you need to set Key Preview Property on form to YES (it will be at the bottom)
Cant reproduce exactly your problem, but some time ago I had somewhat similar issue and solved it by adding: