我有一个具有两个下拉列表的用户窗体。第一个有三个选项,第二个将根据您首先选择的三个选项中的哪个填充不同的选项。测试下拉列表时,第一次一切正常。但是,一旦您尝试更改第一个下拉列表中的值,就会看到它具有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的列表。
答案 0 :(得分:0)
所以要详细说明我的评论:
更改:
Private Sub ComboBox1_DropButtonClick()
进入:
Private Sub UserForm_Initialize()
因为现在您每次单击下拉按钮都将项目添加到ComboBox1
中。显然,创建更大的索引会导致您的第二个ComboBox无法添加项目。有点奇怪,您没有注意到这种做法,因为您也应用了ComboBox2.Clear
代码。