Namen der Registerkarten für dynamische Arbeitsblätter (Microsoft Excel)
Sie wissen wahrscheinlich bereits, dass Sie den Namen einer Arbeitsblattregisterkarte ändern können, indem Sie auf die Registerkarte doppelklicken und einen neuen Namen eingeben. Was ist, wenn Sie es jedoch dynamisch machen möchten? Was ist, wenn der Wert in Zelle A1 automatisch als Registerkartenname angezeigt werden soll?
Leider bietet Excel keine intrinsische Funktion, um diese Art von Aufgabe zu erledigen. Es ist eine relativ einfache Aufgabe, eine solche Funktion mit einem Makro zu entwickeln, das die Arbeit für Sie erledigt. Das folgende Makro ändert beispielsweise den Namen der Registerkarte in den Inhalt von A1:
Sub myTabName() ActiveSheet.Name = ActiveSheet.Range("A1") End Sub
Zu diesem Makro sind einige wichtige Punkte zu beachten. Zunächst erfolgt keine Fehlerprüfung. Dies bedeutet, dass wenn A1 einen Wert enthält, der für einen Registerkartennamen unzulässig wäre, das Makro einen Fehler generiert.
Zweitens muss das Makro manuell ausgeführt werden.
Was ist, wenn Sie ein robusteres Makro wünschen, das nach Fehlern sucht und automatisch ausgeführt wird? Das Ergebnis ist etwas länger, aber immer noch nicht allzu komplex:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Set Target = Range("A1") If Target = "" Then Exit Sub On Error GoTo Badname ActiveSheet.Name = Left(Target, 31) Exit Sub Badname: MsgBox "Please revise the entry in A1." & Chr(13) _ & "It appears to contain one or more " & Chr(13) _ & "illegal characters." & Chr(13) Range("A1").Activate End Sub
Gehen Sie folgendermaßen vor, um dieses Makro einzurichten:
-
Öffnen Sie eine neue Arbeitsmappe mit nur einem Arbeitsblatt.
-
Klicken Sie mit der rechten Maustaste auf die Registerkarte Arbeitsblatt und wählen Sie im daraufhin angezeigten Kontextmenü die Option Code anzeigen. Excel zeigt den VBA-Editor an.
-
Fügen Sie das obige Makro in das Codefenster ein (oder geben Sie es ein).
-
Schließen Sie den VBA-Editor.
-
Suchen Sie den XLStart-Ordner auf Ihrem System. (Verwenden Sie die Windows-Suchfunktionen, um den Ordner zu finden.)
-
Speichern Sie die Arbeitsmappe als makrofähige Excel-Vorlage unter dem Namen Book.xltm im XLStart-Verzeichnis. Dadurch wird die Vorlage zu Ihrem Muster für jede neue Arbeitsmappe, die Sie erstellen.
-
Speichern Sie die Arbeitsmappe erneut als makrofähige Vorlage im selben Verzeichnis, diesmal unter dem Namen Sheet.xltm. Dadurch wird die Vorlage zum Muster für alle neuen Arbeitsblätter, die Sie in eine Arbeitsmappe einfügen.
-
Schließen Sie Excel und starten Sie es neu.
Jedes Mal, wenn Sie den Wert in Zelle A1 ändern, wird auch die Registerkarte Arbeitsblatt aktualisiert.
Bei der Verwendung dieses Tipps gibt es eine Einschränkung: Wenn der Wert in Zelle A1 ein Datum ist und die Registerkarte Arbeitsblatt dieses Datum enthalten soll, erhalten Sie möglicherweise nicht das, was Sie erwarten. Der Grund ist einfach: Excel speichert Datumsangaben intern als Seriennummern, und dies wird der Arbeitsblattregisterkarte zugewiesen, nicht einem formatierten Datum. Wenn Sie mit Datumsangaben arbeiten, müssen Sie ändern, was dem Registerkartennamen tatsächlich zugewiesen ist:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Set Target = Range("A1") If Target = "" Then Exit Sub On Error GoTo Badname ActiveSheet.Name = Format(Target, "mmm-dd-yy") Exit Sub Badname: MsgBox "Please revise the entry in A1." & Chr(13) _ & "It appears to contain one or more " & Chr(13) _ & "illegal characters." & Chr(13) Range("A1").Activate End Sub
Beachten Sie, dass die einzige Änderung hier darin besteht, was der Name-Eigenschaft des Arbeitsblatts zugewiesen wird – es handelt sich um ein formatiertes Datum. Wenn Sie möchten, können Sie das im Makro verwendete Datumsformat ändern. Sie sollten jedoch kein Format wählen, das Schrägstriche verwendet, da diese in Arbeitsblattnamen unzulässig sind.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (7993) gilt für Microsoft Excel 2007, 2010, 2013 und 2016.
Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: