Excel-Tabellenblätter automatisch sortieren: Alphabetisch & Numerisch per VBA-Makro
Hier ist ein ausführliches Tutorial, wie du Excel-Tabellenblätter (Tabs) automatisch mithilfe eines VBA-Makros sortieren kannst – sowohl alphabetisch als auch numerisch.
Excel bietet standardmäßig keine Funktion, um die Registerkarten (Tabs) am unteren Bildschirmrand automatisch zu sortieren. Wenn du viele Blätter hast, kann das manuelle Verschieben sehr mühsam sein. Mit einem kleinen VBA-Skript lässt sich dieser Prozess jedoch automatisieren.
Schritt 1: Den VBA-Editor öffnen
Um ein Makro zu erstellen, musst du in die Entwicklungsumgebung von Excel wechseln:
- Öffne deine Excel-Arbeitsmappe.
- Drücke die Tastenkombination ALT + F11. Der VBA-Editor öffnet sich.
- Klicke im Menü oben auf Einfügen -> Modul. Ein leeres weißes Fenster erscheint.
Schritt 2: Den VBA-Code einfügen
Kopiere je nach Bedarf einen der folgenden Codes in das leere Modulfenster.
Option A: Alphabetische Sortierung (A-Z)
Dieser Code sortiert alle Blätter von A bis Z.
Sub SortiereBlaetterAlphabetisch()
Dim i As Integer, j As Integer
' Schalte Bildschirmaktualisierung aus, um den Vorgang zu beschleunigen
Application.ScreenUpdating = False
' Äußerer Loop: Gehe durch alle Blätter
For i = 1 To Sheets.Count
' Innerer Loop: Vergleiche das aktuelle Blatt mit den restlichen
For j = 1 To Sheets.Count - 1
' Wenn der Name des aktuellen Blattes alphabetisch größer ist als das nächste
If UCase(Sheets(j).Name) > UCase(Sheets(j + 1).Name) Then
' Verschiebe das Blatt hinter das nächste Blatt
Sheets(j).Move After:=Sheets(j + 1)
End If
Next j
Next i
Application.ScreenUpdating = True
MsgBox "Tabellenblätter wurden alphabetisch sortiert!", vbInformation
End Sub
Option B: Numerische Sortierung (1, 2, 10...)
Wenn deine Blätter nur aus Zahlen bestehen (z. B. "1", "2", "10"), würde die alphabetische Sortierung "1, 10, 2" ergeben. Dieser Code behandelt die Namen als Zahlen:
Sub SortiereBlaetterNumerisch()
Dim i As Integer, j As Integer
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
For j = 1 To Sheets.Count - 1
' Val() wandelt den Namen in eine Zahl um, damit 10 größer als 2 ist
If Val(Sheets(j).Name) > Val(Sheets(j + 1).Name) Then
Sheets(j).Move After:=Sheets(j + 1)
End If
Next j
Next i
Application.ScreenUpdating = True
MsgBox "Tabellenblätter wurden numerisch sortiert!", vbInformation
End Sub
Schritt 3: Das Makro ausführen
Nachdem du den Code eingefügt hast, kannst du ihn wie folgt starten:
- Kehre mit ALT + Q oder durch Schließen des Fensters zu Excel zurück.
- Drücke ALT + F8, um das Makro-Fenster zu öffnen.
- Wähle das Makro aus (z. B.
SortiereBlaetterAlphabetisch) und klicke auf Ausführen.
Wichtige Erklärungen zum Code
Application.ScreenUpdating = False: Dieser Befehl verhindert, dass das Flackern des Bildschirms während des Verschiebens angezeigt wird. Das macht das Makro deutlich schneller.UCase(...): Wandelt die Namen intern in Großbuchstaben um, damit die Sortierung nicht zwischen Groß- und Kleinschreibung unterscheidet.Sheets(j).Move After:=Sheets(j+1): Dies ist der Kernbefehl, der die Position der Reiter physisch verändert.- Bubble Sort: Die verwendete Logik ist ein einfacher "Bubble Sort"-Algorithmus. Er vergleicht immer zwei benachbarte Elemente und tauscht sie bei Bedarf aus.
Tipps für die Anwendung
- Arbeitsmappe speichern: Da VBA-Code nicht rückgängig gemacht werden kann (Strg+Z funktioniert hier nicht!), speichere deine Datei, bevor du das Makro ausführst.
- Dateiformat: Du musst die Datei als Excel-Arbeitsmappe mit Makros (.xlsm) speichern, damit der Code erhalten bleibt.
- Absteigende Sortierung: Wenn du von Z bis A sortieren möchtest, ändere im Code einfach das Größer-als-Zeichen (
>) in ein Kleiner-als-Zeichen (<).
Bonus: Schaltfläche für das Makro erstellen
Damit du nicht jedes Mal den Code-Editor oder das Makro-Menü öffnen musst, kannst du eine Schaltfläche in dein Tabellenblatt einfügen:
- Gehe zum Reiter Entwicklertools (falls nicht sichtbar: Rechtsklick auf das Menüband -> Menüband anpassen -> Haken bei Entwicklertools setzen).
- Klicke auf Einfügen -> Schaltfläche (Formularsteuerelement).
- Zeichne die Schaltfläche auf das Blatt und weise ihr das Makro zu. Nun reicht ein Klick zum Sortieren!