【问题标题】:Press enter in textbox and execute button function in VBA在文本框中按回车并在 VBA 中执行按钮功能
【发布时间】:2014-05-12 15:17:51
【问题描述】:

我在 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 会这样?我怎样才能让它发挥作用?

注意我也试过:

  • KeyPress:按下Enter后焦点转到btnLogin(也可能是因为tab顺序是这样的),但btnLogin_Click事件没有执行。
  • KeyUp:与 KeyPress 相同。

【问题讨论】:

  • txtPassword 为空是什么意思?文本框有一个Text 属性。但那个通常是一个空字符串,但不是null
  • 在调试模式下,我将鼠标悬停在 txtboxPassword.Value 上,我得到 null

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


【解决方案1】:

Access 中的按钮有一个名为Default 的属性(在其他 属性页上)。如果您将其设置为Yes 当您按下 Enter 时,表单会自动调用按钮单击事件处理程序。无需额外的按键事件处理。

还有一个Cancel 属性。如果您为按钮将其设置为Yes,则表单会在用户键入Esc 键时自动激活它。 Cancel 按钮非常实用。

【讨论】:

  • 我在 btnLogin 或表单中都找不到该属性。你能多指导我一点吗。谢谢。
  • 对不起,我的回答是针对 VB.NET。我现在更改了 Access 的答案。在 Access 中,您可以设置“确定”按钮的Default 属性。
  • 太棒了!现在完美运行。谢谢!
  • 正如this SO answer 中所引用的,这也适用于 Excel
【解决方案2】:

要激活 KeyCode,您需要将表单上的 Key Preview 属性设置为 YES(它将在底部)

If KeyCode = vbKeyReturn Then
    Your_fuction_here
End If

【讨论】:

    【解决方案3】:

    无法完全重现您的问题,但前段时间我遇到了一些类似的问题并通过添加解决了它:

    Private Sub txtboxPassword_KeyDown(KeyCode As Integer, Shift As Integer)
      If KeyCode = 13 Then
         btnLogin_Click
         KeyCode.Value = 0
      End If
    End Sub
    

    【讨论】:

    • 没用。我收到“编译错误:无效的限定符”,KeyCode.Value 上的 KeyCode 标记为蓝色。
    • 是的,它似乎不喜欢KeyCode.Value = 0。我想添加这个的目的是为了吸收正常的按键动作?
    【解决方案4】:

    在您希望操作的按钮上,转到属性“其他”并将“默认”设置为“是”。然后,当您在文本框中单击输入时,它将操作该按钮。

    【讨论】:

      【解决方案5】:

      KeyPress 而不是 KeyDown 对我有用,调用 _Click 子可以避免发送可能触发其他事件的触发器。

      Private Sub txtboxPassword_KeyPress(KeyAscii As Integer)
          If KeyAscii = 13 Then
               Call btnLogin_Click
          End If
      End Sub
      

      【讨论】:

        猜你喜欢
        • 2013-11-27
        • 2015-01-17
        • 2013-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-03
        • 1970-01-01
        相关资源
        最近更新 更多