0

我有几个组合框,它们都具有相同的值 - “”,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 =>“”,(1)。因此数组是“”、2、3等。2 => (3)。如果演示效果不佳,我很抱歉。无论如何,我怎样才能得到它,以便它从数组中删除值,并重置数组,或者我怎样才能从数组中删除与值匹配的值而不是等于索引的索引?

组合框正在通过我的 excel 工作表上的范围填充

4

1 回答 1

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

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

于 2013-11-05T13:30:56.763 回答