3.2k Aufrufe
Gefragt in Tabellenkalkulation von fedjo Experte (2.2k Punkte)
Hallo Exelfreunde,
ist es möglich durch QuickSort arrDaten die Einträge (Spalte A Datum) von unten nach oben zu sortieren, also die letzten Einträge zuerst?

Ich hoffe ihr habt eine Idee dazu.

Gruß
fedjo


Application.ScreenUpdating = False
Dim objDictionary As Object
Dim varBereich As Variant
Dim arrDaten As Variant
Dim loZaehler As Long

UserForm2.ComboBox3.Clear 'Datum
Set objDictionary = CreateObject("Scripting.Dictionary")
varBereich = Range("A3", Range("A3").End(xlDown))
For loZaehler = LBound(varBereich) To UBound(varBereich)
' Eintrag wird nur übernommen wenn er im DictionaryObject noch nicht enthalten ist
objDictionary(varBereich(loZaehler, 1)) = 0
Next loZaehler
arrDaten = objDictionary.keys
QuickSort arrDaten
UserForm2.ComboBox3.List = arrDaten
Set objDictionary = Nothing
End Sub

13 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Fedjo,

es lag nicht am UserForm sondern daran, dass du den Code nicht korrekt übernommen hast - es muss heißen
Dim arrDaten() As Variant

Vergleiche es mal mit dem, was in deinem Code steht. Wenn du das änderst, funktioniert alles korrekt.

Bis später,
Karin
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hi Karin,
funktioniert wie immer super.

Ich hatte schon mal eine Frage über ComboBoxen gestellt, da war im Code "Dim arrDaten As Variant" so eingetragen.
Da ich beide:
Private Sub QuickSort_Feld(DasFeld, StartUnten, EndeOben, Absteigend As Boolean)
Sub QuickSort(ByRef VA_Array, Optional V_Low1, Optional V_High1)
verwende, war ich etwas irritiert.

Danke noch mal für deine Geduld und Mühe.

Gruß
fedjo
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Fedjo,

im Prinzip ist beides richtig - wichtig ist nur, dass die Variable im Codeverlauf auch so verwendet wird wie sie in der Deklaration festgelegt ist. Also wenn sie als arrDaten deklariert ist, muss sie auch als arrDaten weiter verwendet werden, bzw. bei Deklaration als arrDaten() dann als arrDaten().

Bis später,
Karin
...