EnterKey在VBA Userform中按下button

我在Excel中有一个用户表单,要求input用户名和密码。 一旦你input你的密码,如果你按下回车键 ,只是“select”下一个项目是LogInbutton,但它不会按下它。 你必须再次按Enter才能实际按下button。

我怎么能这样做,当用户按下他的键盘上的inputloginbutton被按下,并与代码关联运行( Logincode_click )?

您也可以使用文本框的按键按下事件处理程序:

 '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就是一个例子。 确保你select了你想要引用的文本框,而且Logincode_Click是你用这个代码调用(运行)的一个例子。 确保你参考你的首选子

一定要尽可能避免“幻数”,要么通过定义自己的常量,要么使用内置的vbXXX常量。

在这种情况下,我们可以使用vbKeyReturn来指示input键的键码(replaceYourInputControlSubToBeCalled )。

  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 

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

 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Logincode_Click End Sub 

除了@ Penn的评论,如果链接断开,你也可以通过将button的Default属性设置为True (你可以在属性窗口中设置它,通过按F4打开)

这样,每当返回被击中,VBA知道激活button的点击事件。 同样,如果将button的Cancel属性设置为True ,则只要按ESC键就会导致该button的click事件(适用于正常退出Userform)


来源:Olivier Jacot-Descombes的答案在这里可以访问https://stackoverflow.com/a/22793040/6609896

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

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

所以你可以跳过按ENTER键一次(一次)。
结果,下一个button(“login”button在这里)将被激活。 当你按一次ENTER(你想要的结果),它将运行与“login”button链接的代码。