VB-Homepage Tipp 317

erweiterte Sortiereigenschaften in Listboxen

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.


Tipp-Download

Quelle :

Zurück zur Übersichtsseite