Sorry - das ist die endgültige Version - wenn Dein Makro funktioniert hast (bid auf neue zeilen), dann funktioniert das auch mit neuen zeilen.
Das in ein Modul einfügen:
Public Function LastRowWithContent(ByVal rngBereich As Range) As Long
'Gibt die letzte Zelle mit Inhalt im Bereich als Range-Objekt zurück
Dim rngZelle As Range
With rngBereich
Set rngZelle = .Find(What:="*", After:=.Range("A1"), lookat:=xlWhole, _
LookIn:=xlFormulas, searchdirection:=xlPrevious)
If rngZelle Is Nothing Then
LastRowWithContent = 1
Else
LastRowWithContent = rngZelle.Row
End If
End With
End Function
Das ist das neue Makro:
Sub Makro3()
Dim rang As Range
Set rang = Range("A10:O2000")
ende = LastRowWithContent(rang)
Rows("10:" & ende).Select
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range( _
"A2:"&ende ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveSheet.Sort
.SetRange Range( "A10:"&ende )
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
|