从i

时间:2019-07-05 07:27:01

标签: excel vba listbox

所以基本上我有两个组合框。 1过滤数据,以便在单元格中显示具有特定值的列表。第二个组合框基本上从列表框的列表中删除数据。但是,我要删除列表框中显示的值以外的其他值。因此,如果我选择XYZ,则希望我的代码删除列表框中DONT中包含XYZ的所有行,而不是删除带有XYZ的行。请在下面查看我的代码,并告诉我您是否也想做任何其他更改。谢谢。

Private Sub ComboBox2_Change()

   On Error Resume Next
   For i = 0 To ListBox1.ListCount
       If ComboBox2.Value = ListBox1.List(i, 6) Then
          ListBox1.RemoveItem (i)
       End If
   Next i

End Sub

1 个答案:

答案 0 :(得分:0)

listbox1的填充方式如下:

Sub FillListBox()
    Dim data() As Variant
    data = Array("AAA", "CCC", "CCC", "Vityata", "was", "here")
    ListBox1.List = data
End Sub

看起来像这样:

enter image description here

任务是删除所有与“ CCC”不同的项目,而不会出现错误。最好将VBA从列表中删除。否则,只要列表小于删除项目之前的数量,列表的计数就会导致错误:

Private Sub ComboBox1_Change()

    Dim i As Long
    For i = ListBox1.ListCount - 1 To 0 Step -1
        Debug.Print ListBox1.List(i)
        If ListBox1.List(i) <> "CCC" Then
            Debug.Print "Removing "; ListBox1.List(i); " from "; i
            ListBox1.RemoveItem (i)
        End If
    Next i

End Sub

最后但并非最不重要的一点是,如果您需要在代码中使用On Error Resume Next才能使其正常工作,则很可能某些情况会变坏并且不会引起注意。尝试避免它。