从userform组合框中删除项目

时间:2013-11-04 20:04:35

标签: excel vba combobox userform

我有几个组合框,它们都具有相同的值 - “”,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

1 个答案:

答案 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

这适用于每个组合框,数字相应增加。在这种情况下,此解决方案效果最佳,因为这些值是以数字开头并按顺序排列的。