Tabellenblattnamen kürzen und Sonderzeichen ersetzen
Schritt-für-Schritt-Anleitung
Um in Excel Tabellenblattnamen zu kürzen und unzulässige Sonderzeichen zu entfernen, kannst Du eine VBA-Funktion verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie Du das umsetzt:
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinWorkbook)", dann Einfügen
> Modul
.
-
Kopiere und füge folgenden Code in das Modul ein:
Function LegalSheetName(strName As String) As String
Dim arrNotAllowed As Variant
Dim n As Integer
' Im Tabellennamen nicht zulässige Zeichen
arrNotAllowed = Array(":", "\", "/", "?", "*", "[", "]")
' unerlaubte Zeichen durch "" ersetzen
For n = 0 To UBound(arrNotAllowed)
strName = Replace(strName, arrNotAllowed(n), "")
Next
' Namen auf 31 Zeichen begrenzen
LegalSheetName = Left(strName, 31)
End Function
-
Verwende dann die Funktion in Deinem Hauptcode, um den Namen des aktiven Blattes zu setzen:
ActiveSheet.Name = LegalSheetName(Cells(myRow, 2))
-
Füge eine Schleife ein, um alle relevanten Blätter zu durchlaufen und den Namen anzupassen.
Häufige Fehler und Lösungen
Alternative Methoden
Eine weitere Methode, um unzulässige Sonderzeichen zu entfernen und den Namen zu kürzen, ist die Verwendung einer benutzerdefinierten Funktion. Hier ist ein Beispiel:
Function fncCheckSheetName(strBlatt As String)
Dim intPos As Integer, strErgebnis As String
strBlatt = Left(strBlatt, 15)
For intPos = 1 To Len(strBlatt)
Select Case Mid(strBlatt, intPos, 1)
Case ":", "/", "\", "*", "?", "[", "]"
strErgebnis = strErgebnis & " "
Case Else
strErgebnis = strErgebnis & Mid(strBlatt, intPos, 1)
End Select
Next
fncCheckSheetName = strErgebnis
End Function
Diese Funktion ersetzt unerlaubte Zeichen durch ein Leerzeichen und begrenzt den Namen auf 15 Zeichen.
Praktische Beispiele
Hier ist ein praktisches Beispiel zur Verwendung des Codes:
For myRow = 4 To myLastRow
If Worksheets(1).Cells(myRow, 7).Value = "yes" Then
Sheets("blanco").Copy Before:=Worksheets(Worksheets.Count)
Dim mySheetName As String
mySheetName = Cells(myRow, 2)
mySheetName = LegalSheetName(mySheetName)
ActiveSheet.Name = mySheetName
End If
Next myRow
In diesem Beispiel wird für jede Zeile in Spalte B, die "yes" enthält, ein neues Blatt erstellt und der Name entsprechend angepasst.
Tipps für Profis
- Nutze die
Replace
-Funktion effizient, um mehrere unerlaubte Zeichen in einem Schritt zu ersetzen.
- Implementiere eine Fehlerbehandlung in Deinem Code, um unerwartete Abstürze zu vermeiden.
- Berücksichtige, dass die maximale Länge eines Blattnamens 31 Zeichen beträgt, und passe Deine Logik entsprechend an.
FAQ: Häufige Fragen
1. Wie kann ich mehr als 31 Zeichen in einem Blattnamen verwenden?
- Das ist nicht möglich, da Excel eine maximale Länge von 31 Zeichen für Blattnamen hat. Du musst den Namen kürzen.
2. Was sind die unzulässigen Sonderzeichen für Excel-Blattnamen?
- Unzulässige Zeichen sind:
:
, \
, /
, ?
, *
, [
, ]
. Diese dürfen nicht im Blattnamen enthalten sein.
3. Wie kann ich überprüfen, ob ein Blatt bereits existiert?
- Du kannst eine Schleife verwenden, um alle Blätter durchzugehen und zu prüfen, ob der gewünschte Name bereits existiert. Eine Fehlerbehandlung kann ebenfalls genutzt werden, um dies zu überprüfen.