我在 Excel 中有一个用户表单,要求输入用户名和密码。输入密码后,如果按下Enter它只会“选择”下一个项目,即LogIn
按钮,但不会按下它。您必须Enter再次点击才能真正按下按钮。
我怎样才能做到这一点,当用户在他的键盘上按下回车键时,登录按钮被按下并且关联的代码运行(Logincode_click
)?
您还可以使用 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
Textbox1 就是一个例子。确保选择要引用的文本框,并且 Logincode_Click 是您使用此代码调用(运行)的示例子。确保您参考您的首选子
请务必尽可能避免使用“幻数”,方法是定义您自己的常量,或者使用内置的vbXXX常量。
在这种情况下,我们可以使用vbKeyReturn来指示回车键的键码(替换YourInputControl和SubToBeCalled)。
Private Sub YourInputControl_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
SubToBeCalled
End If
End Sub
这可以防止一整类兼容性问题和简单的拼写错误,尤其是因为 VBA 为我们将标识符大写。
干杯!
这个对我有用
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Button1_Click
End If
End Sub
除了@Penn 的评论,如果链接断开,您还可以通过将Default
按钮的属性设置为来实现这一点True
(您可以在属性窗口中设置,点击打开F4)
这样,无论何时Return被击中,VBA 都知道激活按钮的单击事件。类似地Cancel
,将按钮的属性设置为True
将导致该按钮的单击事件在ESC按下键时运行(对于优雅地退出用户窗体很有用)
资料来源:Olivier Jacot-Descombes 的答案可在此处访问https://stackoverflow.com/a/22793040/6609896
使用 TextBox 的Exit
事件处理程序:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Logincode_Click
End Sub
在这里您可以简单地使用:
SendKeys "{ENTER}"
在链接到用户名字段的代码末尾。
因此,您可以跳过按 ENTER 键一次(一次)。
结果,将激活下一个按钮(此处为“登录”按钮)。当您按 ENTER 一次(您想要的结果)时,它将运行与“登录”按钮链接的代码。