EnterKey按下VBA Userform中的按钮

use*_*809 13 excel vba

我在Excel中有一个userform,要求输入用户名和密码.输入密码后如果按下Enter它只是"选择"下一个项目即LogIn按钮,但不按下它.您必须Enter再次按下以实际按下按钮.

当用户按下键盘上的Enter键时,如何按下LogIn按钮并且相关的代码是runs(Logincode_click)?

小智 18

您还可以使用TextBox的On Key Press事件处理程序:

'Keycode for "Enter" is 13
Private Sub TextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Then
         Logincode_Click
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

Textbox1就是一个例子.确保选择要引用的文本框,并且Logincode_Click是您使用此代码调用(运行)的示例子.确保你参考你喜欢的子

  • 使用“KeyCode = KeyCodeConstants.vbKeyReturn”,而不是神秘的“KeyCode = 13”。这使得代码中哪个按钮触发该代码变得清晰。另外,当搜索按钮时,您可以输入“KeyCodeConstants”,智能感知会显示所有可用按钮的列表。@drognisep 发布了类似的答案。 (2认同)

dro*_*sep 12

请尽可能避免使用"幻数",方法是定义自己的常量,或使用内置的vbXXX常量.

在这个例子中,我们可以使用vbKeyReturn来指示回车键的键码(替换YourInputControlSubToBeCalled).

   Private Sub YourInputControl_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = vbKeyReturn Then
             SubToBeCalled
        End If
   End Sub
Run Code Online (Sandbox Code Playgroud)

这可以防止整个类别的兼容性问题和简单的拼写错误,特别是因为VBA为我们大写标识符.

干杯!

  • +1 使用内置常量而不是神秘数字。另外,如果您正在寻找特定按钮的键码,您可以输入“KeyCodeConstants”。智能感知会显示所有按钮的键码下拉列表。 (3认同)

Pep*_*pys 5

这个对我有用

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = 13 Then
             Button1_Click
        End If
End Sub
Run Code Online (Sandbox Code Playgroud)


Dav*_*ens 1

使用文本框的Exit事件处理程序:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Logincode_Click  
End Sub
Run Code Online (Sandbox Code Playgroud)