Excel Tabellenblätter automatisch nach Zellwert umbenennen – VBA Tutorial
Hier ist ein ausführliches Tutorial, wie du Excel-Tabellenblätter basierend auf einem Zellwert automatisch mit VBA umbenennen kannst.
Das manuelle Umbenennen von Tabellenblättern kann bei vielen Arbeitsblättern zeitaufwendig sein. Mit einem kleinen VBA-Makro kannst du diesen Prozess automatisieren. Wir schauen uns zwei Varianten an: Eine manuelle Lösung per Knopfdruck und eine vollautomatische Lösung, die reagiert, sobald du den Zellinhalt änderst.
Vorbereitung: Den VBA-Editor öffnen
Bevor du den Code einfügst, musst du die Entwicklertools vorbereiten:
- Drücke
ALT+F11, um den VBA-Editor zu öffnen. - Falls du ein Makro für die manuelle Ausführung erstellen willst: Gehe auf Einfügen > Modul.
- Falls die Umbenennung automatisch passieren soll: Doppelklicke links im Projekt-Explorer auf das entsprechende Tabellenblatt (z. B.
Tabelle1).
Option 1: Umbenennen per Knopfdruck (Modul-Code)
Diese Methode ist ideal, wenn du selbst entscheiden möchtest, wann der Name aktualisiert wird. In diesem Beispiel nutzen wir die Zelle A1 als Namensgeber.
Der Code:
Sub TabellenblattUmbenennen()
Dim NeuerName As String
Dim Blatt As Worksheet
Set Blatt = ActiveSheet
' Hier wird der Wert aus Zelle A1 gelesen
NeuerName = Blatt.Range("A1").Value
' Prüfung, ob die Zelle leer ist
If NeuerName = "" Then
MsgBox "Die Zelle A1 ist leer. Bitte gib einen Namen ein.", vbExclamation
Exit Sub
End If
' Fehlerbehandlung (falls Zeichen wie / \ * ? [ ] enthalten sind)
On Error Resume Next
Blatt.Name = NeuerName
If Err.Number <> 0 Then
MsgBox "Fehler: Der Name konnte nicht geändert werden. " & _
"Stelle sicher, dass keine Sonderzeichen verwendet werden.", vbCritical
Err.Clear
End If
On Error GoTo 0
End Sub
Option 2: Vollautomatisch bei Änderung der Zelle (Event-Code)
Wenn du möchtest, dass sich der Name des Reiters sofort ändert, sobald du in die Zelle (hier wieder A1) etwas tippst, nutzt du ein "Worksheet_Change"-Ereignis.
Wichtig: Dieser Code muss direkt in das Objekt des jeweiligen Tabellenblatts kopiert werden (nicht in ein allgemeines Modul).
Der Code:
Private Sub Worksheet_Change(ByVal Target As Range)
' Überprüfen, ob die Änderung in Zelle A1 stattgefunden hat
If Not Intersect(Target, Range("A1")) Is Nothing Then
Dim NeuerName As String
NeuerName = Range("A1").Value
' Nur ausführen, wenn die Zelle nicht leer ist
If NeuerName <> "" Then
On Error Resume Next
Me.Name = NeuerName
' Fehlermeldung bei ungültigen Zeichen
If Err.Number <> 0 Then
MsgBox "Ungültiger Tabellenname in Zelle A1!", vbCritical
Err.Clear
End If
On Error GoTo 0
End If
End If
End Sub
Was du beachten musst (Einschränkungen)
Excel hat strikte Regeln für die Benennung von Tabellenblättern. Wenn dein Zellwert gegen diese Regeln verstößt, wird das Makro einen Fehler ausgeben:
- Sonderzeichen: Die Zeichen
:,\,/,?,*,[und]sind im Tabellennamen verboten. - Länge: Ein Name darf maximal 31 Zeichen lang sein.
- Eindeutigkeit: Es darf kein anderes Tabellenblatt in derselben Arbeitsmappe geben, das bereits so heißt.
- Leere Zellen: Ein Tabellenblattname darf nicht komplett leer sein.
Datei speichern
Da deine Arbeitsmappe nun VBA-Code enthält, musst du sie als Excel Arbeitsmappe mit Makros (.xlsm) speichern, damit der Code erhalten bleibt.
Tipp: Wenn du den Namen aus einer anderen Zelle als A1 beziehen möchtest, ändere im Code einfach die Bezeichnung Range("A1") in deine Wunschzelle (z. B. Range("B5")) um.