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
в коде длязаставить его работать, скорее всего, что-то пойдет не так и останется незамеченным.Старайтесь избегать этого.