Die Sorted Eigenschaft der Listbox ist Ihnen sicher
bekannt, damit werden alle Listboxeinträge nach ASCII Absteigend sortiert.
Aber was ist mit solchen Angaben wie
Grafik 1 ; Grafik 2 ; Grafik 3 ........ Grafik 15
Auch mit der Sortiereigenschaft wird sich die Grafik 2 nach der Grafik 10 bis 15 einreihen
und deren Beispiele gibt es viele.
Da wäre es doch schön, wenn man eine, ich will es mal intelligente Listboxsortierung
hätte, die dies erkennt.
Na und, ich würde es ja nicht ansprechen, wenn ich Ihnen nicht auch eine Lösung
präsentieren könnte. Und hier ist die entsprechende Funktion,
der Sie nur noch den auszuwertende Controlnamen übergeben müssen.
Sub ReSort(L As Control)
Dim P%, PP%, C%, Pre$, S$, V&, NewPos%, CheckIt%
Dim TempL$, TempItemData&, S1$ For P = 0 To
L.ListCount - 1
S = L.List(P)
For C = 1 To Len(S)
V = Val(Mid$(S, C))
If V > 0 Then Exit For
Next
If V > 0 Then
If C > 1 Then Pre = Left$(S, C - 1)
NewPos = -1
For PP = P + 1 To L.ListCount - 1
CheckIt = False
S1 = L.List(PP)
If Pre
<> "" Then
If InStr(S1, Pre) = 1 Then CheckIt
= True
Else
If Val(S1) > 0 Then CheckIt =
True
End If
If CheckIt
Then
If Val(Mid$(S1, C)) < V Then
NewPos = PP
Else
Exit For
End If
Next
If NewPos > -1 Then
TempL = L.List(P)
TempItemData = L.ItemData(P)
L.RemoveItem (P)
L.AddItem TempL, NewPos
L.ItemData(L.NewIndex) = TempItemData
P = P - 1
End If
End If
Next
End Sub
Füllen Sie Ihre Listbox im Form_Load Event mit Werten, wie Grafik 1 .....
oder Bild 1 von 13 .... o.ä. und basteln sich außerdem einen CommandButton
auf die Form, dem Sie die Anweisung zur Sortierung übergeben.
Bsp. Call ReSort(List1) und starten anschließend über F5 Ihr Demoprojekt. |