24.03.2017, 17:15
(Dieser Beitrag wurde zuletzt bearbeitet: 24.03.2017, 18:09 von Markus1971.)
Hallo zusammen
ich arbeite derzeit an einem kleinen Excel Project in welchen ich VBA nutzen möchte.
Es geht darum das ich ca. 20 Worksheets exakt gleich sortieren möchte.
Ich habe mir nun ein kleines Makro gemacht welches dieses auch brav erledigt. Allerdings war ich nicht in der Lage dieses besonders smart zu programmieren...
Das Problem welches ich habe, ist wenn jemand ein Worksheet umbenennt funktioniert die ganze Sache nicht mehr, da ich die Worksheet Namen genutzt habe.
Auch sind in den 20 Worksheets zwei enthalten, Sheet11 und Sheet12, welche nicht sortiert werden duerfen.
Des Weiteren gefallt mir nicht das mein Makro wenn alle 20 Sheets inkludiert sind riesig aufgebläht und lang ist. Ich bin mir sicher dass man dies auch eleganter mit z.B. einer Schleife lösen kann. Leider bin ich totaler Anfänger und bin erst dabei die Grundlangen mittels eines Buches zu erlernen.
Ich hoffe das jemand von Euch sich das mal anschauen könnte und mir zeigen könnte wie man es besser macht.
Vielen Dank
Markus
ich arbeite derzeit an einem kleinen Excel Project in welchen ich VBA nutzen möchte.
Es geht darum das ich ca. 20 Worksheets exakt gleich sortieren möchte.
Ich habe mir nun ein kleines Makro gemacht welches dieses auch brav erledigt. Allerdings war ich nicht in der Lage dieses besonders smart zu programmieren...
Das Problem welches ich habe, ist wenn jemand ein Worksheet umbenennt funktioniert die ganze Sache nicht mehr, da ich die Worksheet Namen genutzt habe.
Auch sind in den 20 Worksheets zwei enthalten, Sheet11 und Sheet12, welche nicht sortiert werden duerfen.
Des Weiteren gefallt mir nicht das mein Makro wenn alle 20 Sheets inkludiert sind riesig aufgebläht und lang ist. Ich bin mir sicher dass man dies auch eleganter mit z.B. einer Schleife lösen kann. Leider bin ich totaler Anfänger und bin erst dabei die Grundlangen mittels eines Buches zu erlernen.
Ich hoffe das jemand von Euch sich das mal anschauen könnte und mir zeigen könnte wie man es besser macht.
Vielen Dank
Markus
Code:
Sub Macro1()
' Macro1 - Select and Sort
'Selcect Sheet
Sheets("CC 1111 LC").Select
'Selcect all Cells and remove all subtotals
Cells.Select
Selection.RemoveSubtotal
'Selcect range and sort
Range("A2:Y602").Select
ActiveWorkbook.Worksheets("CC 1111 LC").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("CC 1111 LC").Sort.SortFields.Add Key:=Range( _
"A3:A602"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("CC 1111 LC").Sort.SortFields.Add Key:=Range( _
"C3:C602"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("CC 1111 LC").Sort.SortFields.Add Key:=Range( _
"D3:D602"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("CC 1111 LC").Sort
.SetRange Range("A2:Y602")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Coursor position
Range("F3").Select
'Selcect Sheet
Sheets("CC 2222 LC").Select
'Selcect all Cells and remove all subtotals
Cells.Select
Selection.RemoveSubtotal
'Selcect range and sort
Range("A2:Y602").Select
ActiveWorkbook.Worksheets("CC 2222 LC").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("CC 2222 LC").Sort.SortFields.Add Key:=Range( _
"A3:A602"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("CC 2222 LC").Sort.SortFields.Add Key:=Range( _
"C3:C602"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("CC 2222 LC").Sort.SortFields.Add Key:=Range( _
"D3:D602"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("CC 2222 LC").Sort
.SetRange Range("A2:Y602")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Coursor position
Range("F3").Select
'Selcect Sheet
Sheets("CC 3333 LC").Select
'Selcect all Cells and remove all subtotals
Cells.Select
Selection.RemoveSubtotal
'Selcect range and sort
Range("A2:Y602").Select
ActiveWorkbook.Worksheets("CC 3333 LC").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("CC 3333 LC").Sort.SortFields.Add Key:=Range( _
"A3:A602"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("CC 3333 LC").Sort.SortFields.Add Key:=Range( _
"C3:C602"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("CC 3333 LC").Sort.SortFields.Add Key:=Range( _
"D3:D602"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("CC 3333 LC").Sort
.SetRange Range("A2:Y602")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Coursor position
Range("F3").Select
Sheets("Sorting").Select
Range("E5:F28").Select
End Sub