2015-01-23 2 views
1

Я строй UserForm, который содержит два ListBoxes таким образом, что пользователь может выбрать параметры из ListBox1 и добавить их в ListBox2 или же удалить параметры из ListBox2множественных выбор ListBox избегая дубликатов VBA

То, что я борюсь с как можно Я запрещаю добавлять дубликаты в ListBox2? По сути, я хочу построить в функцию, которая проверяет, если опция уже включена в ListBox2

Private Sub CommandButton3_Click() 

'### Adds Items from ListBox1 to ListBox2 
For i = 0 To ListBox1.ListCount - 1 
    If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i) 
Next i 

ListBox1.Selected 

End Sub 

Private Sub CommandButton4_Click() 

'### Removes Items from ListBox2 
Dim counter As Integer 
counter = 0 

For i = 0 To ListBox2.ListCount - 1 
    If ListBox2.Selected(i - counter) Then 
     ListBox2.RemoveItem (i - counter) 
     counter = counter + 1 
    End If 
Next i 

End Sub 
+0

Добавить проверку с помощью COntains function – apomene

+0

Пожалуйста, разместите ссылку на изображение ... –

+0

Не знаете, как функция будет работать в VBA. Тем не менее, я нашел другой подобный поток в stackoverflow, который решает аналогичную проблему и работает, чтобы настроить его на мои нужды: http://stackoverflow.com/questions/19755920/prevent-duplicates-from-adding-items-from-listbox1- к listbox2-VBA-Excel – cybujan

ответ

1

ниже код работал в качестве решения проблемы (?):

Private Sub CommandButton3_Click() 

For i = 0 To ListBox1.ListCount - 1 

    If ListBox1.Selected(i) = True Then 
     valCheck (ListBox1.List(i)) 
    End If 

Next i 

End Sub 

Private Function valCheck(str As String) 

'### Adds Items from ListBox1 to ListBox2 

Dim valExists As Boolean 

    valExists = False 


     For i = 0 To ListBox2.ListCount - 1 

      If ListBox2.List(i) = str Then 
       valExists = True 
      End If 

     Next i 

     If valExists Then 
      MsgBox ("already exists") 
     Else 
      ListBox2.AddItem str 
     End If 





End Function 
Private Sub CommandButton4_Click() 

'### Removes Items from ListBox2 

For i = 0 To ListBox2.ListCount - 1 

    If ListBox2.Selected(i) = True Then ListBox2.RemoveItem (i) 

Next i 



End Sub