ich möchte gern in eine Listbox einer Userform Werte einer Tabelle einlesen z.B.: Spalte A1:A10
bevor die Werte aber dargestellt werden, möchte ich diese gern sortieren.
Wie geht so was.
Danke im Voraus
MFG
Steffen Schmerler
Option Explicit
Dim sArray As Variant
Sub TestLeseArea_Sort()
Dim Bereich As Range
Set Bereich = Range("A1", Cells(Rows.Count, "C").End(xlUp))
sArray = Bereich
'Syntax: "Pos erstes Element", "Pos letztes Element", "Sortierspalte"
QuickSort Lbound(sArray), Ubound(sArray), 1 'Arrea Sortieren
Bereich.Offset(0, 4) = sArray 'sortierte Area in einen Bereich schreiben
Erase sArrea 'Area wieder löschen
End Sub
Sub QuickSort(ByVal MinElem As Long, MaxElem As Long, lngCol As Long)
Dim Mitte As Long
Dim vDummy As Variant
Dim i As Long, j As Long, A As Long
If MinElem > MaxElem Then
Exit Sub
End If
Mitte = (MinElem + MaxElem) \ 2
i = MinElem
j = MaxElem
Do
Do While sArray(i, lngCol) < sArray(Mitte, lngCol)
i = i + 1
Loop
Do While sArray(j, lngCol) > sArray(Mitte, lngCol)
j = j - 1
Loop
If i <= j Then
For A = 1 To Ubound(sArray, 2)
vDummy = sArray(j, A)
sArray(j, A) = sArray(i, A)
sArray(i, A) = vDummy
Next A
i = i + 1
j = j - 1
End If
Loop Until i > j
QuickSort MinElem, j, lngCol
QuickSort i, MaxElem, lngCol
End Sub
Ich hoffe Du kommst damit klar, Rückmeldung wäre nett.
Gruß Tino