按文本框中的Enter键并在VBA中执行按钮功能

时间:2014-04-01 17:31:57

标签: vba ms-access ms-access-2010

我在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

我得到的是一个自制错误,说密码不正确。如果我调试,我发现实际上txtPasswordnull,但我只是输入了文本!

但是,如果我用鼠标单击“登录”按钮,它将完美无缺。为什么vba表现得那样?我该怎么做才能让它发挥作用?

注意我也尝试过:

  • KeyPress:按 Enter 后,焦点转到btnLogin(可能也因为Tab键顺序是这样的),但btnLogin_Click事件未执行。< / LI>
  • KeyUp:与KeyPress相同。

5 个答案:

答案 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