Excel Userform - 在输入后将焦点返回到ComboBox

时间:2015-12-22 19:16:00

标签: excel vba combobox focus userform

我试过了:

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

不幸的是,当我按下回车键时,“焦点”从ComboBox1转移到我用作表单的“后退”按钮的CommandButton。

我的ComboBox1采用用户输入名称(感谢它自动填充)。该人按下回车键并且其下方的按钮(可以点击它)激活。当按钮完成后,我的表单上的“后退”按钮现在是“焦点”,这样如果该人再次进入,则使用“后退”按钮。我想将焦点设置回ComboBox1,这样当用户点击进入时,它会运行代码并将焦点返回到ComboBox1,以便他们可以在需要时再键入另一个名称。

我甚至尝试将Me.ComboBox1.SetFocus放在CommandButton事件序列的末尾,并且仍然选中“后退”按钮。

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

例如,除了ComboBox之外,您可以为表单上的每个控件设置Tab停止属性为False。这样,在按下回车后,焦点会立即返回。

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