Excel 用户窗体 - Return 按回车键后聚焦到 ComboBox

Excel Userform - Return Focus to ComboBox after hitting enter

我试过这个:

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyReturn Then
         Me.ComboBox1.SetFocus
         Show_Information_Click
    End If
End Sub

不幸的是,当我按下回车键时,"focus" 从 ComboBox1 转移到我用作表单的 "Back" 按钮的命令按钮。

我的 ComboBox1 需要一个用户输入的名称(谢天谢地,它会自动完成)。该人按下回车键,其正下方的按钮(可以改为单击)将激活。当按钮完成它的事情时,我表单上的 "Back" 按钮现在是 "focus",这样如果这个人再次点击回车,它会使用 "Back" 按钮。我想将焦点设置回 ComboBox1,这样当用户按下回车键时,它会运行代码并 returns 将焦点放在 ComboBox1 上,以便他们可以在需要时键入另一个名称并再次输入。

我什至尝试将 Me.ComboBox1.SetFocus 放在 CommandButton 事件序列的末尾,但 "Back" 按钮仍处于选中状态。

谢谢!

看看 tab order 和制表位属性,它们可能对您有所帮助(除非您想使用多个控件,并希望使用 Tab 键在它们之间移动)。

例如,您可以将窗体上除 ComboBox 之外的每个控件的制表位 属性 设置为 False。这样一来,回车后,焦点returns就立马出现了。

您可以从属性中设置这些 window,无需使用代码(当然您也可以从代码中设置它们)。

SetFocus 不是要走的路,因为无论如何,框架将在 执行您的例程后 更改焦点。相反,你可以取消按键的效果,这样焦点就不会改变,像这样:

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyReturn Then
         KeyCode = 0
         'Whatever other code that does not affect the focus again...
    End If
End Sub