AW: Listbox userform sort - doch noch offen
28.01.2008 09:39:22
chris
Hilfe,
sortieren dauert doch noch sehr lange.
Über 1 minute dann habe ich abgebrochen .. QWas mache ich falsch ?
Hier mein Code in der Form:
Ich hoffe du hilfst mir noch einmal.
Danke
Private Sub UserForm_Initialize()
'fill listbox with "change numbers" Änderungsnummern
Dim arrList
With Obj_Datenbank.Worksheets("AeAS_daten" & version)
x1 = .Cells(.Rows.Count, 1).End(xlUp).Row
arrList = .Range(.Cells(3, 1), .Cells(x1, 1))
End With
QuickSort arrList
Me.changenumbers_lb.List = arrList
x1 = Obj_Datenbank.Worksheets("AeAS_daten" & version).Cells(Obj_Datenbank.Worksheets(" _
AeAS_daten" & version).Rows.Count, 1).End(xlUp).Row
For x = 3 To x1
Me.changenumbers_lb.AddItem Obj_Datenbank.Worksheets("AeAS_daten" & version).Cells(x, 1) _
.Value
Next
'sortieren einträge Änderungsnummern
End Sub
Private Sub abbruch_Click()
Me.Hide
Unload Me
End Sub
Private Sub ok_Click()
End Sub
Sub QuickSort(ByRef VA_array, Optional V_Low1, Optional V_high1)
On Error Resume Next
Dim V_Low2, V_high2, V_loop As Integer
Dim V_val1, V_val2 As Variant
If IsMissing(V_Low1) Then
V_Low1 = LBound(VA_array, 1)
End If
If IsMissing(V_high1) Then
V_high1 = UBound(VA_array, 1)
End If
V_Low2 = V_Low1
V_high2 = V_high1
V_val1 = VA_array((V_Low1 + V_high1) / 2)
While (V_Low2
While (VA_array(V_Low2)
V_Low2
V_Low2 = V_Low2 + 1
Wend
While (VA_array(V_high2) > V_val1 And _
V_high2 > V_Low1)
V_high2 = V_high2 - 1
Wend
If (V_Low2
V_val2 = VA_array(V_Low2)
VA_array(V_Low2) = VA_array(V_high2)
VA_array(V_high2) = V_val2
V_Low2 = V_Low2 + 1
V_high2 = V_high2 - 1
End If
Wend
If (V_high2 > V_Low1) Then Call _
QuickSort(VA_array, V_Low1, V_high2)
If (V_Low2
QuickSort(VA_array, V_Low2, V_high1)
End Sub