Tabellenblätter mit VBA umbenennen?
Hallo zusammen,
ich stehe vor dem Problem die Inhalte von zwei Tabellen tauschen zu müssen.
Da die Daten zum Teil aus Checkboxen besteht ist das nicht so einfach.
Meine Idee ist folgende: Ich möchte z.B. die Namen der Tabellenblätter 1.11 und 1.15 tauschen. Dazu muss ich der Tabelle 1.11 erst zur Tabelle "x" umbenennen und 1.15 zu "y" umbenenen. Anschließend bekommt Tabelle "x" die Bezeichnung 1.15 und Tabelle "y" die Bezeichnung 1.11.
Welche Tabellen ihre Bezeichnungen untereinander tauschen sollen steht in Zelle K1 und K2. In diesem Beispiel 1.11 und 1.15.
folgendes habe ich mir überlegt... nur funktioniert es nicht.
Sub test()
alterName = Range("K1")
neuerName = Range("K2")
zwischenName1 = "x"
zwischenName2 = "y"
Dim WsTabelle As Worksheet
For Each WsTabelle In Sheets
If WsTabelle.Name = alterName Then
Sheets(alterName).Name = zwischenName1
If WsTabelle.Name = neuerName Then
Sheets(alterName).Name = zwischenName2
If WsTabelle.Name = zwischenName1 Then
Sheets(alterName).Name = neuerName
If WsTabelle.Name = zwischenName2 Then
Sheets(alterName).Name = alterName
Exit For
End If
Next WsTabelle
End Sub
1 Antwort
Hallo oxmoks,
die einfachste Möglichkeit wäre, die Namen von Hand zu ändern. Es sei denn, Du hast öfters dieses "Problem".
Ein Fehler besteht darin, dass Du <alterName = Range("K1")> ohne den Worksheetnamen auslesen möchtest. Ist aber das Worksheet, in dem die Namen stehen wirklich das aktive Worksheet? Zudem ist die Schleife unnötig (außerdem ist die Schleife fehlerhaft!).
Hier eine einfachere Lösung:
Die alten und neuen Namen schrieb ich in die Tabelle <Namenstabelle>
Der Code:
Sub test()
Dim alterName1 As String
Dim alterName2 As String
Dim neuerName1 As String
Dim neuerName2 As String
Dim Zwischenname1 As String
Dim Zwischenname2 As String
alterName1 = Worksheets("Namenstabelle").Range("A2").Value
alterName2 = Worksheets("Namenstabelle").Range("A3").Value
neuerName1 = Worksheets("Namenstabelle").Range("B2").Value
neuerName2 = Worksheets("Namenstabelle").Range("B3").Value
Zwischenname1 = "x"
Zwischenname2 = "y"
Worksheets(alterName1).Name = Zwischenname1
Worksheets(alterName2).Name = Zwischenname2
Worksheets(Zwischenname1).Name = neuerName1
Worksheets(Zwischenname2).Name = neuerName2
End Sub