AW: Sortierung wiederholen
22.07.2011 17:22:19
fcs
Hallo Ulf,
Excel 2007 hat ein anderes Sortierobjektmodel als Excel 2003 und älter. Man kann jetzt nach mehr als 3 Spalten sortieren. Bei der Umstellung ist dann wohl auch die mir allerdings unbekannte Funktionalität verloren gegangen, dass man die Sortierung für verschiedene Zellbereiche per Strg+Y wiederholen kann.
Wenn deine zu sortierenden Zellbereiche jeweils auch Spaltentitel haben, dann kann man per Makro die Sortierung auf eine andere Selektion übertragen.
Das Makro kannst du in ein allgemeines Modul deiner perönlichen Makroarbeitsmappe einfügen.
Gruß
Franz
Sub CopySortierung()
Dim rSortRange As Range, rTitel As Range
Dim arrSortName() As String
Dim wks As Worksheet, iJ As Integer
Set wks = ActiveSheet
Set rSortRange = Selection
With wks
If .Sort.SortFields.Count > 0 Then
ReDim arrSortName(1 To .Sort.SortFields.Count)
'Namen der Spaltentitel der Sortierspalten einlesen
For iJ = 1 To UBound(arrSortName)
arrSortName(iJ) = .Sort.SortFields(iJ).Key.Range("A1").Offset(-1, 0).Value
Next
'Sortierbereich der Sortfields neu zuweisen
For iJ = 1 To UBound(arrSortName)
'Spalte mit Sortierspalten-Titel in Zeile 1 der selektierten Zellen suchen
Set rTitel = rSortRange.Rows(1).Find(what:=arrSortName(iJ), LookIn:=xlValues, _
lookat:=xlWhole)
If rTitel Is Nothing Then
MsgBox "Sortier-Titel """ & arrSortName(iJ) _
& """ in Selektion nicht gefunden, Abbruch", vbInformation, _
"Sortierung wiederholen"
Exit Sub
Else
'Bereich neu zuweisen
.Sort.SortFields(iJ).ModifyKey .Range(rTitel.Offset(1, 0), _
rTitel.Offset(rSortRange.Rows.Count - 2, 0))
End If
Next
With .Sort
.SetRange rSortRange
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Else
MsgBox "Es gibt keinen existierenden Sortierbereich", vbInformation, "Sortierung _
wiederholen"
End If
End With
End Sub