Excel用户窗体 – 点击回车后将​​焦点返回到combobox

我试过这个:

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,我用作表单的“后退”button。

我的ComboBox1采取用户input名称(它自动完成感激地)。 人按下input,并在其下面的一个button(可以点击代替)激活。 当button完成后,我的表单上的“返回”button现在成为“焦点”,所以如果用户再次进入,则使用“返回”button。 我想将焦点设置回ComboBox1,以便当用户点击input时,它将运行代码并将焦点返回到ComboBox1,以便他们可以键入另一个名称,如果他们愿意并再次去。

我甚至试图把Me.ComboBox1.SetFocus放在CommandButton事件序列的末尾,而“后退”button仍然被选中。

谢谢!

看看Tab键的顺序和Tab停止属性,它们可能会帮助你(除非你想使用多个控件,并希望使用Tab键在它们之间移动)。

例如,您可以将Tab停止属性设置为False除了您的ComboBox窗体上的每个控件。 这样,在进入后,焦点立即返回。

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

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 
Interesting Posts