Die Community zu .NET und Classic VB.
Menü

FAQ 0136: Wie ändere ich den Namen eines Excel-Arbeitsblattes?

 von 

Frage 

Wie kann ich den Namen eines Arbeitsblattes in Excel ändern?

Beispiel  

Das folgende Beispiel zeigt, wie man den Namen ändern kann. Der neue Name wird aus der Zelle A1 (oder Z1S1) ausgelesen, sobald diese Zelle geändert wird.
Der Quelltext stammt von Alexander Fross:

Option Explicit

Private Sub Workbook_SheetChange( _
                ByVal Sh As Object, _
                ByVal Target As Range)

    '   Der Tabellenname ist mit der jeweiligen Zelle A1 der
    '   entsprechenden Tabelle verknüpft. Sobald die Zelle A1 geändert
    '   wird, ändert sich auch der Tabellenname.
    If Target.Address = Cells(1, 1).Address Then
        Call ChangeWksName(Sh, Left$(Target.Value, 31))
    End If
End Sub

Private Sub ChangeWksName(Wks As Worksheet, Nme As String)
    Dim xi      As Long         'Zähler ForNext
    
    '   Alle Zeichen die nicht verwendet werden dürfen aus String
    '   entfernen.
    Nme = Replace(Nme, ":", vbNullString)
    Nme = Replace(Nme, "\", vbNullString)
    Nme = Replace(Nme, "/", vbNullString)
    Nme = Replace(Nme, "?", vbNullString)
    Nme = Replace(Nme, "*", vbNullString)
    Nme = Replace(Nme, "[", vbNullString)
    Nme = Replace(Nme, "]", vbNullString)
    
    If Len(Nme) = 0 Then Exit Sub
    
    '   Arbeitsmappenschutz entfernen
    ThisWorkbook.Unprotect
    
    On Error Resume Next
    
    xi = 1
    Wks.Name = Nme

    '   Überprüfen ob der Tabellenname bereits verwendet wird. Wenn
    '   dies der Fall ist, dem Tabellennamen eine Zahl (aufsteigend)
    '   anhängen, bis der Tabellenname nicht mehr doppelt vorhanden ist.
    '   Gebenfalls muss die Zeichenanzahl des Namens gekürzt werden, da
    '   dieser nicht mehr als 31 Zeichen beinhalten darf. Die
    '   Vorgehensweise ist die gleiche, wie die jeinige von Excel.
    Do Until Err.Number <> 1004
        Err.Clear
        xi = xi + 1
        Wks.Name = Left$(Nme, 28 - Len(xi)) & " (" & xi & ")"
    Loop
    
    On Error Goto 0
    
    '   Arbeitsmappe schützen
    ThisWorkbook.Protect
End Sub

Listing 1: Name eines Excel-Arbeitsblattes ändern

Der Quelltext verwendet die Funktion Replace, welche erst ab Excel 2000 vorhanden ist. Geschwindigkeitsfanatiker und Besitzer älterer Excel-Versionen sollten sich daher folgendes anschauen:
FAQ 0049: Ersatz für einige Stringfunktionen

Ihre Meinung  

Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.