Daten sofort bei Eingabe sortieren

101080



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