Das nachfolgende Makro sortiert alle in einem Tabellenblatt eingegebenen Werte automatisch nach den Werten der Spalte A aufsteigend. Dabei werden die Zellen A1 bis A100 berücksichtigt. Die Sortierung erfolgt sofort nach Bestätigung der neu erfassten Werte.
Private Sub Worksheet_Change(ByVal Target As Range) 'Beschränken der Makroausführung auf den Bereich A1 bis A100 If Not Application.Intersect(Target, Range("A1:A100")) Is Nothing Then 'Bereich, auf den sich die Sortierung auswirken soll Range("A1:A100").Select 'Sortierkriterien Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, _ Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _ Orientation:=xlTopToBottom 'Zelle A1 auswählen Range("A1").Select End If End Sub
Bei diesem Beispiel werden nur die Werte der Spalte A sortiert. Werte ab der Spalte B werden in die Sortierung nicht mit einbezogen.
Möchten Sie die Sortierung für mehrere Spalten ausdehnen, d. h. die Sortierkriterien stehen nach wie vor in Spalte A nur sollen auch alle nebenstehenden Spalten entsprechend mit sortiert werden, da es sich um einen zusammengehörenden Datensatz handelt, so müssen Sie die Sortierkriterien wie folgt anpassen.
In dem nachfolgenden Beispiel werden die Spalten A bis E nach der Spalte A in aufsteigender Reihenfolge sortiert.
Private Sub Worksheet_Change(ByVal Target As Range) 'Beschränken der Makroausführung auf den Bereich A1 bis A100 If Not Application.Intersect(Target, Range("A1:A100")) Is Nothing Then 'Bereich, auf den sich die Sortierung auswirken soll Range("A1:E100").Select 'Sortierkriterien Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, _ Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _ Orientation:=xlTopToBottom 'Zelle A1 auswählen Range("A1").Select End If End Sub