我试过了:
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事件序列的末尾,并且仍然选中“后退”按钮。
谢谢!
答案 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。这样,在按下回车后,焦点会立即返回。
您可以从属性窗口设置这些,不需要使用代码(当然您也可以从代码中设置它们)。