2017-01-23 22 views
0

У меня есть два списка в Access VBA. Я хочу сравнить эти два списка и хочу удалить элементы из второго списка, если тот же элемент не указан в первом списке.Доступ к VBA: Сравнить два списка

Например: Listbox 1 Значение: "Пункт 1", "Пункт 3" Listbox 2 значения: "Пункт 1", "Пункт 2", Пункт 3"

Теперь я хочу функцию, которая сравнивает Эти два ListBoxes и удаляет «пункт 2» из Listbox 2, так как она не указана в Listbox 1.

Я попытался код, но единственное, что у меня есть это одна:

If BR_TeamReport.ListCount > 0 Then 
    For i = 0 To BR_TeamReport.ListCount - 1 
     For y = 0 To BR_Team.ListCount - 1 
      If BR_TeamReport.ItemData(i) = BR_Team.ItemData(y) Then 
       MsgBox ("Don't Delete") 
      Else 
       MsgBox ("Delete") 
      End If 
     Next y 
    Next i 
End If 
+0

Я предполагаю, что Listbox 1 также имеет другое значение, например «Item 4», поэтому каждый список содержит разные значения. – HarveyFrench

ответ

1

Рассмотрим это:

If BR_TeamReport.ListCount > 0 Then 
    For i = 0 To BR_TeamReport.ListCount - 1 
     FoundItem = False 
     For y = 0 To BR_Team.ListCount - 1 
      If BR_TeamReport.ItemData(i) = BR_Team.ItemData(y) Then 
       FoundItem = True 
      End If 
     Next y 
     If Not FoundItem Then 
      ' Delete item as it was not found in the first listbox 
      BR_Team.RemoveItem (y) 
     End If 
    Next i 
End If 

Я думаю, что это будет достичь того, чего вы хотите.

+0

Спасибо! Это сработало для меня! :) – oemerkk

+0

Пожалуйста, отметьте мой ответ как ответ и стрелку вверх. Спасибо – HarveyFrench

+0

Извините за это, сделал это несколько минут назад :) – oemerkk

0

Почему бы не очистить блок 2-го списка, а затем повторно заполнить едой t один?

For i = 0 To LstBox2.ListCount - 1 
    LstBox2.RemoveItem(i) 
next i 

For i = 0 TO LstBox1.ListCount - 1 
    lstBox2.AddItem LstBox1.ItemData(i) 
Next i