2017-09-26 10 views
-1

Cela peut sembler une question facile, mais je n'ai pas trouvé de moyen simple d'écrire la sortie d'une collection (juste une colonne) dans une feuille de calcul. Collection donne les bonnes réponses sur debug.print et tout ce que je veux faire cela suffit de mettre cette sortie sur une feuille de calcul, puis effacer la sortie.Écrire les valeurs d'une collection VBA dans une feuille de calcul

Ceci est mon code principal pour la collecte;

Worksheets(Ders_Sheet_Adi).Visible = True 
Dim LastRowXL_1, LastRowXL_2, LastRowXL_3 As Long 
Dim uniques As Collection 
Dim Source_XL As Range 

LastRowXL_1 = Worksheets(Ders_Sheet_Adi).Cells(Rows.Count, 40).End(xlUp).Row 
LastRowXL_2 = Worksheets(Ders_Sheet_Adi).Cells(Rows.Count, 41).End(xlUp).Row 
LastRowXL_2_Q = LastRowXL_2 + 1 
LastRowXL_3 = Worksheets(Ders_Sheet_Adi).Cells(Rows.Count, 42).End(xlUp).Row 
LastRowXL_3_Q = LastRowXL_3 + 1 
LastRowXL_4_Q = LastRowXL_3_Q + LastRowXL_1 + 1 

XL_Main = WorksheetFunction.Max(LastRowXL_1, LastRowXL_2, LastRowXL_3) 

Set Source_XL = Worksheets(Ders_Sheet_Adi).Range("AN2:AP" & XL_Main & "") 
Set uniques = GetUniqueValues(Source_XL.Value) 
+1

Le lien ci-dessous pourrait vous aider. https://stackoverflow.com/questions/18227942/how-to-write-a-vba-collection-to-an-excel-sheet – Fong

+0

Je doute que vous pouvez faire un 'Debug.print' sur une collection - cela jette une erreur (* 450 - Nombre incorrect d'arguments ou affectation de propriété incorrecte *). Vous devez faire une boucle sur les éléments de la collection pour l'imprimer ou pour l'écrire dans une feuille. – FunThomas

+0

Pouvez-vous poster votre code qui debug.prints avec succès les valeurs? Comme l'a dit @funthomas, vous devez répéter les valeurs –

Répondre

0

J'ai trouvé un moyen, simplement en plaçant un tableau For après la collection. I Mettez ces codes après la collecte et voilà, ça marche tout de suite;

Dim it_XL 

Worksheets(Ders_Sheet_Adi).Range("AN1:AP1100").Select 
Selection.ClearContents 

it_XLQ = 1 
For Each it_XL In uniques 
If it_XLQ = 1 Then it_XLQ_M = 100 Else it_XLQ_M = it_XLQ - 1 
Worksheets(Ders_Sheet_Adi).Range("AP" & it_XLQ & "") = it_XL 
If Worksheets(Ders_Sheet_Adi).Range("AP" & it_XLQ & "") = Worksheets(Ders_Sheet_Adi).Range("AP" & it_XLQ_M & "") Then 
Worksheets(Ders_Sheet_Adi).Range("AP" & it_XLQ & "").Delete 
GoTo Son2 
Else: GoTo Son3 
End If 
Son3: 
it_XLQ = it_XLQ + 1 
Next 

Worksheets(Ders_Sheet_Adi).Range("AP1:AP20").Copy 
Worksheets(Ders_Sheet_Adi).Range("AQ1:AQ20").PasteSpecial Paste:=xlPasteValues 

Son2: 

LastRow_END = Worksheets(Ders_Sheet_Adi).Cells(Rows.Count, 43).End(xlUp).Row