我在Access 2010中使用VBA代码创建了一个登录表单。我希望能够在txtboxPassword
上按 Enter 并自动执行btnLogin_Click
事件。我试过这个:
Private Sub txtboxPassword_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
btnLogin_Click
End If
End Sub
我得到的是一个自制错误,说密码不正确。如果我调试,我发现实际上txtPassword
是null
,但我只是输入了文本!
但是,如果我用鼠标单击“登录”按钮,它将完美无缺。为什么vba表现得那样?我该怎么做才能让它发挥作用?
注意我也尝试过:
btnLogin
(可能也因为Tab键顺序是这样的),但btnLogin_Click
事件未执行。< / LI>
答案 0 :(得分:7)
Access中的按钮具有名为Default
的属性(在“其他”属性页面上)。如果将其设置为“是”
当您按 Enter 时,表单会自动调用它。无需密钥事件处理。
还有一个Cancel
属性。如果为按钮将其设置为“是”,则表单会在用户键入 Esc -key时自动激活它。 “取消”按钮非常实用。
答案 1 :(得分:2)
要激活KeyCode,您需要将表单上的键预览属性设置为 YES (它将位于底部)
If KeyCode = vbKeyReturn Then
Your_fuction_here
End If
答案 2 :(得分:0)
无法准确再现您的问题,但前段时间我遇到了类似的问题并通过添加以下内容解决了这个问题:
Private Sub txtboxPassword_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
btnLogin_Click
KeyCode.Value = 0
End If
End Sub
答案 3 :(得分:0)
在您要操作的按钮上,转到属性&#39;其他&#39;并设置&#39;默认&#39;是的。然后当您在文本框中单击输入时,它将操作按钮。
答案 4 :(得分:0)
KeyPress而不是KeyDown适用于我,并且调用_Click子避免发送可能触发其他事件的触发器。
Private Sub txtboxPassword_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Call btnLogin_Click
End If
End Sub