从 ListBox 中删除 i 以外的项目
Remove Item from ListBox other than i
基本上我有两个组合框。 1 过滤数据,以便在单元格中显示具有特定值的列表。第二个组合框基本上从列表框中的列表中删除数据。但是我想要的是删除列表框中显示的值以外的值。因此,如果我 select XYZ 我希望我的代码删除列表框中没有 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
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
才能使其正常工作,很可能会出现问题并且不会引起注意。尽量避免。
基本上我有两个组合框。 1 过滤数据,以便在单元格中显示具有特定值的列表。第二个组合框基本上从列表框中的列表中删除数据。但是我想要的是删除列表框中显示的值以外的值。因此,如果我 select XYZ 我希望我的代码删除列表框中没有 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
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
才能使其正常工作,很可能会出现问题并且不会引起注意。尽量避免。