Clever-Excel-Forum

Normale Version: Tabellenblätter automatisch benennen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich brauch mal wieder Hilfe. Ich habe habe Netz einiges gefunden, aber irgendwie nicht das richtige für mich oder ich kenne mich einfach noch zu wenig mit VBA aus.
Ich erkläre kurz mal.

Ich möchte gerne 15 Tabellenblätter automatisch umbenennen und zwar mit Nachname, Vorname. Die Namen habe ich in einer Tabelle auf einen einen anderen Tabellenblatt. Die Nachnamen stehen in Spalte B  von "B2:B16" und die Vornamen in Spalte C von "C2:C16" und nun sollen am liebsten die Tabellenblätter  "1_TN bis 15_TN"  umbenannt werden und zwar mit Komma dazwischen. Bisher habe ich für mich nur eine einfach Lösung gefunden und zwar durch einen Button auf den einzelnen Tabellenblättern, die das Blatt umbenennen und zwar lautet der Code:

Sub TabellennamenSetzen()
Dim Zelle As String
Zelle = "a1"
ActiveSheet.Name = ActiveSheet.Range(Zelle).Text
End Sub



In der Zelle A1 habe ich mir eine Verkettung gebaut, so dass der Name komplett angezeigt wird. Das funktioniert auch, aber eigentlich wäre es mir lieber, wenn es automatisch über die Tabellenliste unter "Noten_TN" funktioniert, wenn ich Namen eingebe. Ich habe schon so einiges probiert, aber irgendwie klappt es nicht.

Ich habe auch als Ansatz meine Datei mitgesendet.
[attachment=31418]
Vielleicht hat jemand eine Idee für mich
Hallo,
Sub aaa()
  Dim i As Long
  Dim varNamen As Variant
  varNamen = Worksheets("Noten_TN").Range("B2:C16").Value
  For i = 1 To 15
    If varNamen(i, 1) & varNamen(i, 2) <> "" Then
      Worksheets(i & "_TN").Name = varNamen(i, 1) & ", " & varNamen(i, 2)
    End If
  Next i
End Sub
Gruß Uwe
Hallo Uwe,

das ist schon der richtige Weg. Nur kenne ich ich mich zu wenig aus. Wie löst er sich automatisch aus und was ist, wenn sich der Name mal ändert? Hierzu muss ich ja einen Button setzen und er meckert auch, liegt außerhalb des Index-Bereich.

Vielen Dank für die Hilfe
Hallo,

füge folgenden Code in das schon vorhandene VBA-Modul des Tabellenblattes Noten_TN ein:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim i As Long
  If Not Application.Intersect(Range("B2:C16"), Target) Is Nothing Then
    For i = 1 To 15
      With Sheets(i + 2)
        If .Range("A1").Value = ", " Then
          .Name = i & "_TN"
        Else
          .Name = .Range("A1").Value
        End If
      End With
    Next i
  End If
End Sub
Gruß Uwe
Oh super,

vielen Dank es  klappt