Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

vba Sortieren DataOption und Order als Variable

Forumthread: vba Sortieren DataOption und Order als Variable

vba Sortieren DataOption und Order als Variable
12.12.2018 15:06:09
Maik
Hallo zusammen,
ich möchte die Sortiereinstellungen DataOption und Order als Variable übergeben.
ActiveWorkbook.Worksheets(sRegister).Sort.SortFields.Add Key:=rSortierspalte_2, SortOn:=xlSortOnValues, Order:=sRichtung_2, DataOption:=sDataOption_2
Wie muss ich DataOption und Order deklarieren, damit das auch geht (string und variant) geht nicht :-(.
Danke schon mal für die Hilfe.
Maik
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba Sortieren DataOption und Order als Variable
12.12.2018 17:34:33
onur

xlSortDataOption enumeration (Excel)
Specifies how to sort text.
Name 	Value 	Description
xlSortNormal 	        0 	default. Sorts numeric and text data separately.
xlSortTextAsNumbers 	1 	Treat text as numeric data for the sort.

DataOption ist entweder 0 oder 1, also Long oder Integer.
Aber um die Variable einzulesen, musst du auch Index mit angeben:
x = ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields(1).DataOption 

Anzeige
AW: vba Sortieren DataOption und Order als Variable
13.12.2018 14:22:34
Maik
Hallo onur,
dann bekomme ich in der Zeile den Fehler 400
ActiveWorkbook.Worksheets(sRegister).Sort.SortFields.Add Key:=rSortierspalte_1, SortOn:=xlSortOnValues, Order:=lRichtung_1, DataOption:=lDataOption_1
Deklaration ist. (int geht auch nicht):
lRichtung_1 As Long, lRichtung_2 As Long, lRichtung_3 As Long, _
lDataOption_1 As Long, lDataOption_2 As Long, lDataOption_3 As Long
Übergeben werden die Werte richtig als 0 und 1.
Die Sortierfunktion kann nur damit anscheinend nichts anfangen.
Danke
Maik
Anzeige
AW: vba Sortieren DataOption und Order als Variable
13.12.2018 17:09:40
onur
Mit Codestückchen kann ich nix anfangen.
Wo, wie und wann werden die werte ausgelesen und übergeben?
Wenn schon, dann poste den GANZEN Code.
;
Anzeige
Anzeige

Infobox / Tutorial

Sortieren mit VBA: DataOption und Order als Variablen


Schritt-für-Schritt-Anleitung

Um die Sortiereinstellungen DataOption und Order in VBA zu verwenden, musst du diese korrekt als Variablen deklarieren und übergeben. Hier sind die Schritte, die du befolgen solltest:

  1. Variablen deklarieren: Stelle sicher, dass du die Variablen für DataOption und Order als Long deklarierst.

    Dim lRichtung_1 As Long
    Dim lDataOption_1 As Long
  2. Werte zuweisen: Setze die Werte für lRichtung_1 und lDataOption_1. Diese sollten entweder 0 (für xlSortNormal) oder 1 (für xlSortTextAsNumbers) sein.

    lRichtung_1 = 1 ' Beispielwert
    lDataOption_1 = 0 ' Beispielwert
  3. Sortierfunktion aufrufen: Verwende die .Sort.SortFields.Add Methode, um die Sortierfelder hinzuzufügen. Achte darauf, dass du die korrekten Variablen übergibst.

    ActiveWorkbook.Worksheets(sRegister).Sort.SortFields.Add Key:=rSortierspalte_1, _
       SortOn:=xlSortOnValues, Order:=lRichtung_1, DataOption:=lDataOption_1
  4. Sortierung ausführen: Rufe anschließend die .Sort Methode auf, um die Sortierung durchzuführen.

    ActiveWorkbook.Worksheets(sRegister).Sort.Apply

Häufige Fehler und Lösungen

  • Fehler 400: Dieser Fehler tritt häufig auf, wenn die übergebenen Variablen nicht korrekt sind. Überprüfe, ob die Werte von lRichtung_1 und lDataOption_1 tatsächlich 0 oder 1 sind.

  • DataOption Typfehler: Stelle sicher, dass die Variablen als Long deklariert sind, da DataOption nur die Werte 0 oder 1 akzeptiert.


Alternative Methoden

Wenn du keine Variablen verwenden möchtest, kannst du die DataOption und Order direkt in der Sortierfunktion angeben:

ActiveWorkbook.Worksheets(sRegister).Sort.SortFields.Add Key:=rSortierspalte_1, _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

Diese Methode ist weniger flexibel, aber in manchen Fällen einfacher.


Praktische Beispiele

Hier ist ein vollständiges Beispiel für die Anwendung der Sort Methode in VBA:

Sub SortiereDaten()
    Dim lRichtung As Long
    Dim lDataOption As Long
    Dim rSortierspalte As Range

    Set rSortierspalte = ActiveWorkbook.Worksheets("Tabelle1").Range("A1:A10")
    lRichtung = xlAscending ' oder xlDescending
    lDataOption = xlSortNormal ' oder xlSortTextAsNumbers

    ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add Key:=rSortierspalte, _
        SortOn:=xlSortOnValues, Order:=lRichtung, DataOption:=lDataOption

    With ActiveWorkbook.Worksheets("Tabelle1").Sort
        .SetRange Range("A1:B10")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Tipps für Profis

  • Debugging: Nutze die Debugging-Tools von Excel, um den Wert deiner Variablen während der Ausführung zu überprüfen. Dies hilft dir, Fehler schneller zu identifizieren.

  • Dynamische Bereichszuweisung: Verwende dynamische Bereiche, um sicherzustellen, dass deine Sortierung immer die aktuellen Daten umfasst.

  • Namen verwenden: Statt harte Werte zu verwenden, nutze benannte Bereiche, um deine Sortierfelder flexibler zu gestalten.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Sortierfelder hinzufügen? Du kannst mehrere Sortierfelder hinzufügen, indem du die .Sort.SortFields.Add Methode mehrmals aufrufst, bevor du die Sortierung anwendest.

2. Was ist der Unterschied zwischen xlSortNormal und xlSortTextAsNumbers? xlSortNormal sortiert numerische und textliche Daten separat, während xlSortTextAsNumbers textliche Werte als numerische Werte behandelt, was bei der Sortierung von Zahlen in Textform hilfreich ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige