所以基本上我有两个组合框。 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
答案 0 :(得分:0)
listbox1
的填充方式如下:
Sub FillListBox()
Dim data() As Variant
data = Array("AAA", "CCC", "CCC", "Vityata", "was", "here")
ListBox1.List = data
End Sub
看起来像这样:
任务是删除所有与“ 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
才能使其正常工作,则很可能某些情况会变坏并且不会引起注意。尝试避免它。