16

我在 Excel 中有一个用户表单,要求输入用户名和密码。输入密码后,如果按下Enter它只会“选择”下一个项目,即LogIn按钮,但不会按下它。您必须Enter再次点击才能真正按下按钮。

我怎样才能做到这一点,当用户在他的键盘上按下回车键时,登录按钮被按下并且关联的代码运行(Logincode_click)?

4

6 回答 6

19

您还可以使用 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 是您使用此代码调用(运行)的示例子。确保您参考您的首选子

于 2013-10-01T21:56:51.920 回答
18

请务必尽可能避免使用“幻数”,方法是定义您自己的常量,或者使用内置的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

这可以防止一整类兼容性问题和简单的拼写错误,尤其是因为 VBA 为我们将标识符大写。

干杯!

于 2015-06-29T20:28:19.587 回答
5

这个对我有用

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = 13 Then
             Button1_Click
        End If
End Sub
于 2014-09-09T13:35:26.747 回答
2

除了@Penn 的评论,如果链接断开,您还可以通过将Default按钮的属性设置为来实现这一点True(您可以在属性窗口中设置,点击打开F4

这样,无论何时Return被击中,VBA 都知道激活按钮的单击事件。类似地Cancel,将按钮的属性设置为True将导致该按钮的单击事件在ESC按下键时运行(对于优雅地退出用户窗体很有用)


资料来源:Olivier Jacot-Descombes 的答案可在此处访问https://stackoverflow.com/a/22793040/6609896

于 2017-03-22T12:51:39.940 回答
1

使用 TextBox 的Exit事件处理程序:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Logincode_Click  
End Sub
于 2013-10-01T21:11:04.407 回答
0

在这里您可以简单地使用:

SendKeys "{ENTER}"在链接到用户名字段的代码末尾。

因此,您可以跳过按 ENTER 键一次(一次)。
结果,将激活下一个按钮(此处为“登录”按钮)。当您按 ENTER 一次(您想要的结果)时,它将运行与“登录”按钮链接的代码。

于 2017-08-28T08:35:55.323 回答