Excel VBA individuelle Sortierung greift nicht

Nico_B

Lt. Junior Grade
Registriert
Sep. 2010
Beiträge
345
Hallo zusammen,

ich möchte gerne über ein VBA-Makro zusätzlich importierte Daten in einer bestehenden Liste einsortieren.

Hierbei soll die zweite Sortierung nach einer individuellen Liste erfolgen:

Code:
Sub Daten_SORTIEREN()
Dim i As Long, SS1 As Variant, SS2 As Variant, SS3 As Variant, ES As Variant, LS As Variant, EZ As Variant, LZ As Variant

'Datenbereich
ES = Sheets("Optionen").Range("B10").Value
LS = Sheets("Optionen").Range("B30").Value
EZ = Sheets("Optionen").Range("B35").Value
LZ = Sheets("Optionen").Range("B36").Value

'Suchspalten
SS1 = Sheets("Optionen").Range("B12").Value
SS2 = Sheets("Optionen").Range("B13").Value
SS3 = Sheets("Optionen").Range("B10").Value

'sortierreihenfolge
Application.AddCustomList Array("gering", "mittel" "hoch")

' letzte zeile Ermitteln
i = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
' Letzte Zeile in Zelle schreiben
Sheets("Optionen").Range("B36").Value = i

Range(ES & (EZ - 1) & ":" & LS & LZ).Sort Key1:=Range(SS1 & EZ), Key2:=Range(SS2 & EZ), OrderCustom:=3, Key3:=Range(SS3 & EZ), Header:=xlYes

End Sub

Zu meinem bedauern greift jedoch die indivduelle Sortierung nicht. Kann mir jemand helfen?
 
was mir dabei auffällt: definition variablen mit , ...damit hab ich schonmal keine guten erfahrungen gemacht...

bei deiner sortierung fehlt mir schonmal das worksheet vor der range und auch die sortierungsoptionen ansich ala Order1:=xlAscending, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal etc

gibts denn wenigstens ne fehlermeldung?
 
Hallo.

Nein eine Fehlermeldung gibt es nicht. Ohne weitere definition funktioniert die Sortierung auch aufsteigend. Den Code habe ich auch dem Tabellenblatt hinterlegt. Dadurch brauche ich einen Worksheetbezug meines Erachtens nicht.
 
Moin,
was steht denn in den Datenbereichs- und Suchspalten-Variablen/Zellen?? Stehen da einfach Zahlen drin?
Edit:
Weil wenn du nicht irgendwelche Zauber in die SS1 bis SS3 verpackst wird deine Suchzeile recht komisch aufgelöst.
Bspw.
Key1:=Range(SS1 & EZ) --> Key1:=Range(11)

Edit2: Abgesehen davon, wenn du keine Diagramme in deiner Sheet-Auflistung willst, benutze immer Worksheet, dann weißt du, dass immer ein worksheet-Objekt zurückkommt und nicht etwa ein diagram.
Weiterhin würde ich immer mit direkter Referenzierung arbeiten. ActiveSheet ist für mich ein rotes Tuch.
Wenn du den Code auf einem Tabellenblatt hinterlegst, ihn aber aus einem anderen heraus aufrufst (Stichwort: public) gilt er aber für das aufrufende Worksheet.
Sprich du BRAUCHST es nicht, ist aber sauberer.
Ganz einfach, ganz am Anfang (oder per Attribut übergeben an die Sub) einfach das gewünschte Worksheet mitgeben und daraufhin referenzieren, dann kannst du das Teil theoretisch auch immer wiederverwenden.
 
Zuletzt bearbeitet:
Hallo.
SS steht hier Suchspalte (1, 2, 3). Hierin stehen ausschließlich Buchstaben.
EZ und SZ stehen für erste Zeile und letzte Zeile. Also Beginn und Ende der Zeilen in denen die Datensätze/Tupel stehen.

Ich habe diesen Aufbau gewählt, um flexibel auf änderunen/Erweiterungen in der Datenbank zu reagieren.

Range(SS1&EZ&":"&SS1&LZ) bedeutet übersetzt: RANGE(C5:C4962)

Eine Erweiterung des Codes bringt überigens nichts:

Code:
Sheets("Import").Range(ES & (EZ - 1) & ":" & LS & LZ).Sort Key1:=Range(SS1 & EZ), Order1:=xlAscending, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, Header:=xlYes, Key2:=Range(SS2 & EZ), Order2:=xlAscending, OrderCustom:=10, Header:=xlYes, Key3:=Range(SS3 & EZ), Header:=xlYes
 
Und in ES und LS stehen dann auch Buchstaben?
Edit: Ach und starte doch mal die normale Excel Sortierfunktion als Benutzerdefiniertes Sortieren. Sind da deine Sortierungen aufgeführt?
Weil bei mir macht das Skript das, was es soll...

Edit2: Kannst mal das hier probieren und gucken, ob alles bei dir stimmt.
Code:
MsgBox "Range(" & ES & (EZ - 1) & ":" & LS & LZ & ").Sort Key1:=Range(" & SS1 & EZ & "), Key2:=Range(" & SS2 & EZ & "), OrderCustom:=3, Key3:=Range(" & SS3 & EZ & "), Header:=xlYes"
 
Zuletzt bearbeitet:
die " wären mein nächster tipp gewesen...ich kenns auch nur innerhalb selbiger und nicht ohne
 
Zurück
Oben