Im Excel mit VBA sortieren

Hallo Leute,

Ich habe ein Excelarbeitsblatt in dem die ersten 7 Zeilen Kopfinfos sind,
In den Zelle A7:Jxxx(xxx steht hier für variablen) stehen meine Infos. Jetzt möchte ich als 1.Ebene nach der Spalte A sortieren und als 2.Ebene nach Spalte B sortieren.
Ich müsste wissen wie sowas in VBA aussieht.
Habe leider davon keine Achung.

vielen Dank für eure Hilfe in vorraus.

mfg Werner

Jetzt möchte ich als 1.Ebene nach der Spalte A
sortieren und als 2.Ebene nach Spalte B sortieren.
Ich müsste wissen wie sowas in VBA aussieht.
Habe leider davon keine Achung.

Dann mach das doch einmalig von Hand und lass dabei einfach mal eine Makroaufzeichnung laufen. Oder wo könnte sonst ein Problem sein?

Gruß
smalbop

Das Problem ist, das die Anzahl der Zellen von A7:J1 bis nach A7:J??? sich verändern können.Deshalb kann ich keine absolute Zellennamen verwenden.

Gruß
Werner

1 „Gefällt mir“

Dann zeichne den Code auf, stelle ihn hier rein und ich nehme die nötigen Änderungen vor.

Dann zeichne den Code auf, stelle ihn hier rein und ich nehme
die nötigen Änderungen vor.

Hallo smalbop

Vielen Dank für den Tip. Es funktioniert.

Mein Script sieht jetzt wie folgt aus.

Worksheets(„ProjekteMitKom“).Select

ActiveWorkbook.Worksheets(„ProjekteMitKom“).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(„ProjekteMitKom“).Sort.SortFields.Add Key:=Range _
(Cells(7, 1), Cells(rMaxOK, 1)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets(„ProjekteMitKom“).Sort.SortFields.Add Key:=Range _
(Cells(7, 2), Cells(rMaxOK, 2)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(„ProjekteMitKom“).Sort
.SetRange Range(Cells(7, 1), Cells(rMaxOK, 10))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Meine Frage ist:
Kann man das Script vereinfachen da ich ja schon vorher das Arbeitsblatt aufgerufen habe.

Hallo Werner

Kann man das Script vereinfachen da ich ja schon vorher das
Arbeitsblatt aufgerufen habe.

Ich habe das gekürzt, was vermutlich überflüssig ist. Teste mal

With ActiveSheet.Sort
 With .SortFields
 .Clear
 .Add Key:=Range(Cells(7, 1), Cells(rMaxOK, 1)), \_
 SortOn:=xlSortOnValues
 .Add Key:=Range(Cells(7, 2), Cells(rMaxOK, 2)), \_
 SortOn:=xlSortOnValues
 End With
 .SetRange Range(Cells(7, 1), Cells(rMaxOK, 10))
 .Header = xlGuess
 .MatchCase = False
 .Orientation = xlTopToBottom
 .Apply
End With

Ich nehme an, du hast eine geeignete Methode, wie man rMaxOK bestimmt. Per Code ginge das ebenso, aber als Zellfunktion natürlich auch.

Gruß
smalbop

Hallo smalbop,

Vielen Dank. Es funktioniert.

Werner