2016-11-10 1 views
0

J'ai déjà utilisé ce même code VBA sur d'autres listboxes pour ajouter des non-doublons avec succès. Malheureusement, cette fois, il me donne une erreur "erreur définie par l'application ou définie par l'objet". Toute idée à ce sujet est grandement appréciée, je ne sais pas pourquoi cela n'ajoute pas les éléments à la liste. Il s'agit également d'une zone de liste ActiveX qui est ajoutée dans la feuille de calcul au lieu d'un formulaire utilisateur. Je l'ai fait ce même code exact avant sans problème, mais cette fois les erreurs dues à: rngData.SortFonction VBA .Sort pour la zone de liste

Private Sub lstCountry_Click() 
Dim wsData As Worksheet 
Dim strID As String 
Dim rngData As Range 
Dim rngCell As Range 
Dim shtPivot 
Set shtPivot = ThisWorkbook.Worksheets("Pivot") 
Set wsData = ThisWorkbook.Worksheets("Raw Data") 
Set rngData = wsData.Range("a2").CurrentRegion 


lstCountry.Clear 
strID = "Select Country" 
rngData.Sort key1:=strID, Header:=xlYes 


For Each rngCell In rngData.Columns(1).Cells 
    If rngCell.Value <> strID Then 
     lstCountry.AddItem rngCell.Value 
     strID = rngCell.Value 
    End If 
Next rngCell 

Ci-joint une capture d'écran de la table que je suis en train de trier enter image description here

+0

ce code s'appellerait à chaque instruction 'lstCountry.AddItem'. De plus, je ne peux pas comprendre que 'strID = rngCell.Value' dans la boucle' For Each rngCell': quel est votre véritable objectif? – user3598756

+0

Mon but est d'ajouter les valeurs de la capture d'écran que je viens de joindre à une liste sans doublons. Je l'ai fait avant avec succès, juste cette fois je reçois une erreur et je ne sais pas pourquoi! – Rosario

+0

quelle feuille de calcul est la zone de liste ActiveX que vous souhaitez traiter? comment le remplis-tu la première fois? – user3598756

Répondre

0

Voici un bon exemple comment utiliser l'option de tri: https://msdn.microsoft.com/en-us/library/office/ff840646.aspx

Dans votre cas, très probablement vous n'avez pas « Select Country » écrit sur le dessus de votre gamme. Votre gamme supérieure est rangée 2. Pouvez-vous donner une capture d'écran?

+0

Je viens de joindre une capture d'écran. Merci – Rosario

+0

pouvez-vous modifier strID à la suivante 'strID = wsData.Range (" a2 ")' – Vityata

+0

Rien ne sera ajouté si je le fais @vityata – Rosario

0

Je viens de comprendre. J'ai recopié la table sur laquelle je tirais des informations dans une autre feuille, et mon code a fonctionné. Il est étrange que cela ne fonctionne pas exactement sur la même table dans une autre feuille de calcul. Je ne comprends pas, mais je vais aller avec ma table nouvellement copiée à la place. J'apprécie l'aide. :-)