2017-09-13 1 views
0

Je veux avoir 2 listes de sélection, 1 avec un tas de valeurs et une avec un autre groupe de valeurs, je veux les ajouter à une troisième liste, puis supprimer tous les correspondants valeurs,2 Listboxes en 1 et ensuite supprimer les valeurs correspondantes VBA

voici mon code que j'ai obtenu jusqu'à présent,

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 

révisée, Nous vous remercions pour votre aide monsieur, je demande maintenant pourquoi je reçois cette erreur, merci!

Error

+0

Ce qui ne fonctionne pas/quelles sont les erreurs? –

Répondre

0

Vous pouvez utiliser un objet Scripting.Dictionary qui permet des clés uniques. Vous pouvez vérifier si un élément existe en utilisant la méthode .Exists.

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:

Crédit @Nathan_Sav pour avoir signalé. Pas besoin de boucler pour remplir le 3ème ListBox.

ListBox3.List = obj.Keys() 
+0

merci pour votre aide, s'il vous plaît voir la mise à jour de l'image, mais je peux voir que c'est exactement ce que j'ai besoin d'être fait! –

+1

Vous pouvez ignorer la dernière boucle, en disant juste 'listbox3.list = obj.keys()' –

+0

@Ashley Davies En effet, nous avons rempli le dictionnaire avec des clés mais pas de valeurs. Un simple 'vbNullString' fera l'affaire. Voir la mise à jour –