2017-09-13 5 views
0

Ich möchte 2 Listenfelder, 1 mit einem Bündel von Werten und eins mit einem anderen Haufen von Werten, ich möchte sie zu einem 3. Listbox hinzufügen und löschen Sie dann alle die Übereinstimmung Werte,2 Listboxen in 1 und dann löschen übereinstimmende Werte VBA

hier mein Code, ich habe bisher

für Ihre Hilfe Sir
For i = 0 To (ListBox1.ListCount - 1) 
ListBox3.AddItem (ListBox1.List(i)) 
Next 

Dim qstring As String 


For i = 0 To (ListBox2.ListCount - 1) 

qstring = ListBox1.List(i) 

With Me.ListBox3 
     'Loop through combobox 
     For b = 0 To .ListCount - 1 
      If .List(b) = qstring Then 
       strFound = True 
       Exit For 
      End If 
     Next b 
     'Check if we should add item 
     If Not strFound Then .AddItem (qstring) 
    End With 

Next 

überarbeitete, Danke bekommen, bin ich jetzt fragen, warum ich diese Störung erhalte, Danke!

Error

+0

Was funktioniert nicht/was sind die Fehler? –

Antwort

0

können Sie ein Scripting.Dictionary Objekt verwenden, die eindeutige Schlüssel ermöglicht. Mit der Methode .Exists können Sie überprüfen, ob ein Element vorhanden ist.

Sub Whatever() 
    Dim obj As Object 
    Set obj = CreateObject("Scripting.Dictionary") 

    '1st ListBox 
    For i = 0 To ListBox1.ListCount - 1 
     If Not obj.Exists(CStr(ListBox1.List(i))) Then 
      obj.Add CStr(ListBox1.List(i)), vbNullString 
     End If 
    Next 

    '2nd ListBox 
    For i = 0 To ListBox2.ListCount - 1 
     If Not obj.Exists(CStr(ListBox2.List(i))) Then 
      obj.Add ListBox2.List(i), vbNullString 
     End If 
    Next 

    'add unique list to 3rd ListBox 
    Dim Key As Variant 
    For Each Key In obj.Keys 
     ListBox3.AddItem Key 
    Next Key 
End Sub 

Edit:

Credit @Nathan_Sav für diesen Hinweis. Keine Schleife erforderlich, um die 3. ListBox zu füllen.

ListBox3.List = obj.Keys() 
+0

Vielen Dank für Ihre Hilfe, bitte sehen Sie aktualisierten Bild, aber ich kann sehen, dass dies genau das ist, was ich getan werden muss! –

+1

Sie können die letzte Schleife überspringen, indem Sie einfach 'listbox3.list = obj.keys()' 'sagen –

+0

@Ashley Davies Tatsächlich füllten wir das Wörterbuch mit Schlüsseln, aber keine Werte. Ein einfacher 'vbNullString' genügt. Siehe aktualisierte Antwort. –

Verwandte Themen