我有几个组合框,它们都具有相同的值 - “”,1-12。我试图得到它,以便当用户选择一个项目时,所有其他项目都会消失。选择新项目后,它会重新填充最后一项。
这就是我迄今为止的目标。
Private Old182 As String
Private Sub ComboBox182_Change()
Dim i
Dim y
If ComboBox182 <> Old182 Then
For i = 182 To 193
If i <> 182 Then
If ComboBox182 <> Old182 Then
If ComboBox182 <> "" Then
Controls("ComboBox" & i).RemoveItem ComboBox182.Value
If ComboBox182 <> "" Then
If Old182 <> "" Then
Controls("ComboBox" & i).AddItem Old182
End If
End If
End If
End If
End If
Next
End If
Old182 = ComboBox182.Value
End Sub
我的第一次尝试,它将删除第一项。比方说我点击1.它将删除(1)。如果我点击2它将删除(3)。我相信这样做是因为它正在通过索引值删除它。 1 =&gt; “”,(1)。因此,阵列是“”,2,3等.2 =&gt; (3)。对不起,如果演示效果差,我很抱歉。无论如何,如何获取它以便它将从数组中删除值,并重置数组,或者如何从数组中删除值与值匹配而不是索引等于索引?
通过我的Excel工作表上的范围填充Combobox
答案 0 :(得分:0)
我在问题中找到的解决方案如下:
Dim i
Dim y
Dim z As String
z = ""
If ComboBox182 <> Old182 Then
For i = 182 To 193
If i <> 182 Then
If ComboBox182 <> Old182 Then
If Old182 <> "" Then
Controls("ComboBox" & i).AddItem Old182, Old182
Controls("ComboBox" & i).RemoveItem (Old182 + 1)
End If
Controls("ComboBox" & i).RemoveItem ComboBox182.ListIndex
Controls("ComboBox" & i).AddItem z, ComboBox182.ListIndex
End If
End If
Next
End If
Old182 = ComboBox182.Value
这适用于每个组合框,数字相应增加。在这种情况下,此解决方案效果最佳,因为这些值是以数字开头并按顺序排列的。