7.2.1 Wie kann man Zellbereiche sortieren?
Um Zellbereich zu sortieren gibt es die Methode "Sort" eines Bereiches.
Um diese Methode zu verwenden muss man aber einige Parameter setzen. Dazu werden zwei neue Structs erzeugt. Einer für bestimmte Properties und einer für die Festlegung der Sortierfeldes. Man kann auch mehrere Sortierfelder verwenden.

Beim Sortierfeld wird die Spalte, die Sortierrichtung (Aufwärts/Abwärts) und der Feldtyp bestimmt.
Mögliche Feldtypen sind:
com.sun.star.util.SortFieldType.ALPHANUMERIC, Sortierung von Text
com.sun.star.util.SortFieldType.NUMERIC, Sortierung von Zahlen
com.sun.star.util.SortFieldType.AUTOMATIC, Typ wird erkannt

Die Sortierrichtung wird mit "isascending" festgelegt.
True = Aufsteigend
False = Absteigend

Das Feld wird durch die Position, beginnend bei 0, festgelegt.
Zusätzlich kann man noch festlegen ob Groß- und Kleinschreibung beachtet wird. Dies geht aber auch über die Sortierkriterien.

Als nächstes müssen die Properties ergänzt werden.

"SortFields", für das neue erzeugt Struct
"SortColumns", false Zeilen werden sortiert, true Spalten.
"ContainsHeader", wenn true wird die erste Zeile nicht mitsortiert
"IsCaseSensitive", Groß-/Kleinschreibung

Sub SortiereBereich
   Dim SortProps(2) As new com.sun.star.beans.PropertyValue
   Dim SortFeld(0) As new com.sun.star.table.TableSortField

   oDatei = ThisComponent
   oSheet = oDatei.Sheets(0)
   oBereich = oSheet.getCellRangeByName("A1:D20")

    SortFeld(0).Field = 0
    SortFeld(0).IsAscending = True
    SortFeld(0).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
     
     SortProps(0).Name = "SortFields"
     SortProps(0).Value = SortFeld()
     SortProps(1).Name = "SortColumns"
     SortProps(1).Value = False
     SortProps(2).Name = "ContainsHeader"
     SortProps(2).Value = true
     oBereich.Sort(SortProps())
End Sub

Möchte man  über zwei oder drei Felder (mehr lässt OO/SO nicht zu) sortieren muss dies im Struct entsprechend festgelegt werden.


    Dim SortFeld(1) As new com.sun.star.table.TableSortField
    SortFeld(0).Field = 0
    SortFeld(0).IsAscending = True
    SortFeld(0).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
    SortFeld(1).Field = 1
    SortFeld(1).IsAscending = True
    SortFeld(1).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC