Удалить элемент из списка, кроме меня - PullRequest
1 голос
/ 05 июля 2019

Так что в основном у меня есть два комбинированных списка.1 отфильтруйте данные, чтобы показать списки с определенным значением в ячейке.второй комбинированный список в основном удаляет данные из списка в списке.Однако я хочу удалить значения, отличные от тех, которые показаны в списке.Поэтому, если я выбираю 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

1 Ответ

0 голосов
/ 05 июля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...