更改值后,用户窗体下拉列表填充不正确

时间:2019-05-23 16:07:05

标签: excel vba

我有一个具有两个下拉列表的用户窗体。第一个有三个选项,第二个将根据您首先选择的三个选项中的哪个填充不同的选项。测试下拉列表时,第一次一切正常。但是,一旦您尝试更改第一个下拉列表中的值,就会看到它具有12个以上的选项(最初的3个选项一遍又一遍地重复)。所有选项都不会再次填充第二个下拉列表。

Private Sub ComboBox1_DropButtonClick()

With ComboBox1
.AddItem "Option 1"
.AddItem "Option 2"
.AddItem "Option 3"
End With

End Sub

-------------------------------------------------------------------

Private Sub ComboBox1_Change()

Dim index As Integer
index = ComboBox1.ListIndex

ComboBox2.Clear

Select Case index
Case Is = 0
    With ComboBox2
        .AddItem "Option 1.1"
        .AddItem "Option 1.2"
        .AddItem "Option 1.3"
    End With
Case Is = 1
    With ComboBox2
        .AddItem "Option 2.1"
        .AddItem "Option 2.2"
        .AddItem "Option 2.3"
        .AddItem "Option 2.4"
        .AddItem "Option 2.5"
    End With
Case Is = 2
    With ComboBox2
        .AddItem "Option 3.1"
        .AddItem "Option 3.2"
    End With
End Select

End Sub

我希望能够在不破坏代码的情况下多次更改第一个下拉列表。因此,如果您对选项1改变了主意,则可以随时将其更改为选项2,并正确获取选项2的列表。

1 个答案:

答案 0 :(得分:0)

所以要详细说明我的评论:

更改:

Private Sub ComboBox1_DropButtonClick()

进入:

Private Sub UserForm_Initialize()

因为现在您每次单击下拉按钮都将项目添加到ComboBox1中。显然,创建更大的索引会导致您的第二个ComboBox无法添加项目。有点奇怪,您没有注意到这种做法,因为您也应用了ComboBox2.Clear代码。