AW: Listbox sortieren lassen
12.12.2006 18:44:57
Erich
Hallo Horst,
wie hast du Liste deklariert und mit Werten gefüllt?
So läufts problemlos:
Option Explicit
Private Sub UserForm_Activate()
Dim ii As Integer
For ii = 0 To 10
ListBox1.AddItem Round(20 * Rnd(), 0)
Next ii
End Sub
Private Sub CommandButton2_Click()
Me.Hide
End Sub
Private Sub CommandButton1_Click()
Dim Liste() As Long, ii As Integer
' oder Double
ReDim Liste(ListBox1.ListCount)
For ii = 0 To ListBox1.ListCount - 1: Liste(ii + 1) = CLng(ListBox1.List(ii)): Next ii
' oder CDbl
Quicksort 1, UBound(Liste), Liste
ListBox1.Clear
For ii = 1 To UBound(Liste): ListBox1.AddItem Liste(ii): Next ii
End Sub
Private Sub Quicksort(ByVal LL As Long, ByVal RR As Long, ByRef mA() As Long)
' oder Double
Dim ii As Integer, jj As Integer, M As Long, Tmp As Long
' oder Double Double
If RR <= LL Then Exit Sub
ii = LL: jj = RR: M = mA((LL + RR) / 2)
Do
Do While mA(ii) < M: ii = ii + 1: Loop
Do While mA(jj) > M: jj = jj - 1: Loop
If ii <= jj Then
Tmp = mA(ii): mA(ii) = mA(jj): mA(jj) = Tmp
ii = ii + 1: jj = jj - 1
End If
Loop Until ii > jj
If LL < jj Then Quicksort LL, jj, mA()
If ii < RR Then Quicksort ii, RR, mA()
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort