comboboxselect不出现在首先点击Excel VBA

我正在写一个脚本在Excel VBA中,我在一个用户Userform工作。 在这个用户Userform ,我有两个ComboBoxComboBox1ComboBox4 。 这两个ComboBox都是在脚本中填充的下拉列表。

我已经做到这一点,以便ComboBox4得到填充后,取决于ComboBox1上的用户input。 我写了下面的代码:

 Private Sub UserForm_Activate() With ComboBox1 .AddItem "Afghanistan" .AddItem "Åland Islands" .AddItem "Albania" .AddItem "Algeria" .AddItem "American Samoa" .AddItem "Andorra" End With With ComboBox4 .AddItem "Africa" .AddItem "Americas" .AddItem "Asia" .AddItem "Europe" .AddItem "MENA" .AddItem "Other" End With End Sub Private Sub ComboBox1_Change() If ComboBox1 = "" Then ComboBox4 = vbNullString: ComboBox4.Enabled = True Else Dim index As Integer index = ComboBox1.ListIndex Select Case index Case Is = 0 ComboBox4.Value = "Asia" ComboBox4.Enabled = False Case Is = 1 ComboBox4.Value = "Europe" ComboBox4.Enabled = False Case Is = 2 ComboBox4.Value = "Europe" ComboBox4.Enabled = False Case Is = 3 ComboBox4.Value = "MENA" ComboBox4.Enabled = False Case Is = 4 ComboBox4.Value = "Asia" ComboBox4.Enabled = False Case Is = 5 ComboBox4.Value = "Europe" ComboBox4.Enabled = False End Select End If End Sub 

一切似乎工作正常。 唯一的问题是, ComboBox1有一个奇怪的和恼人的行为:每当我打开用户Userform并从ComboBox1的下拉列表中select一个选项或开始键入它不select选项或键入字母,除非我这样做两次。 所以,如果我从列表中select一个选项,它将保持空白,直到我再次select它; 如果我开始input,那么我input的第一个字母就不会出现,而是从第二个input。

我不明白发生了什么事情,并且已经研究过,尽pipe不成功。 感谢您的帮助!

使用ComboBox1_AfterUpdate()事件而不是ComboBox1_Change()事件

在叙述中,你讲的是ComboBox1CombBox2 ,而你的代码则是ComboBox1CombBox4

只是检查你是不是搞砸了

那么,也许你有一些ComboBox2_Change (或ComboBox4_Change ),改变你的代码ComboBox1值,从而干扰ComboBox1_Change

顺便说一句,你可能会采取更短的代码ComboBox1_Change ,如下所示:

 Private Sub ComboBox1_Change() If ComboBox1 = "" Then ComboBox4 = vbNullString: ComboBox4.Enabled = True Else ComboBox4.Enabled = False Select Case ComboBox1.ListIndex Case 0, 4 ComboBox4.Value = "Asia" Case 1, 2, 5 ComboBox4.Value = "Europe" Case 3 ComboBox4.Value = "MENA" Case Else ComboBox4.Enabled = True End Select End If End Sub 

在那里你可以将所有ComboBox4事件更改为ComboBox2