Tabellenblätter automatisch benennen
#1
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.

.xltm   Noten_AP_Vorlage.xltm (Größe: 1.011,57 KB / Downloads: 3)
Vielleicht hat jemand eine Idee für mich
Top
#2
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
Top
#3
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
Top
#4
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
Top
#5
Oh super,

vielen Dank es  klappt
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste