Excel Tabellenblätter automatisch umbenennen und aktualisieren?
Hallo, ich bin Excel-Anfänger und möchte für die Schule eine Zeugnisliste erstellen. Dazu habe ich auf dem ersten Blatt mit der Bezeichnung "Namen" eine Liste mit Name, Vorname usw. von den Schülern erstellt. Auf den folgenden Seiten habe ich die Notenblätter. Jedes Notenblatt zieht im Feld C1 den Namen und im Feld H1 den Vornamen des Schülers (Quelle ist jeweils das erste Blatt mit der Bezeichnung "Namen"). Jetzt möchte ich, dass die Notenblätter automatisch umbenannt werden nach den Namen der Schüler (Bsp.: Mustermann, Heike) und auch dass die Namen der Notenblätter automatisch aktualisiert werden, wenn sie auf dem ersten Blatt "Namen" geändert werden. Wer kann mir helfen?
2 Antworten
Ausgangslage: Auf dem Hauptblatt steht in Spalte A der Name und in Spalte B der Vorname des Schülers.
Dann definiere folgendes Event am Haupttabellenblatt:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count = 1 And Target.Row > 1 And Target.Column <= 2 And Not IsEmpty(Target.Value) Then If Worksheets.Count < Target.Row Then _ Worksheets.Add after:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count) If Target.Column = 1 Then Worksheets(Target.Row).Name = Target.Value Worksheets(Target.Row).Range("C1") = Target.Value End If If Target.Column = 2 Then _ Worksheets(Target.Row).Range("H1") = Target.Value End If End Sub
Mit Haupttabellenblatt meine ich das Blatt mit Nach- und Vornamen aller Schüler.
Ich bin von Nachnamen in Spalte A und Vornamen in Spalte B ausgegangen.
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count = 1 And Target.Row > 1 And _ (Target.Column = 2 Or Target.Column = 3) And Not IsEmpty(Target.Value) Then If Worksheets.Count < Target.Row Then _ Worksheets.Add after:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count) If Target.Column = 2 Then Worksheets(Target.Row).Name = Target.Value Worksheets(Target.Row).Range("C1") = Target.Value End If If Target.Column = 3 Then _ Worksheets(Target.Row).Range("H1") = Target.Value End If End Sub
Du fügst das Makro unter Entwicklertools → Visual Basic → Tabelle1 (Haupttabellenblatt) ein.
Die Arbeitsmappe würde ich im .xlsm-Format speichern.
________________
Die Aufgabe lässt sich ohne grundlegende Kenntnisse in der Programmierung nicht lösen.
Du hast die Wahl: Entweder du arbeitest dich hinein oder du versuchst die Aufgabe auf dein Können umzudefinieren.
Dann werde ich es wohl von Hand zu Fuß machen müssen. Für mehr als einen fertigen Code einzufügen reicht es nicht.
Der Code war fast perfekt, es fehlte nur, dass der Vorname mit übernommen wurde
Sub BlattNameausC1()
Dim wks As Worksheet
For Each wks In Worksheets
wks.Name = wks.Range("C1").Value
Next
End Sub
Irgendeine Idee, wie der Name der Blätter aus C1 (=Nachname) und H1 (=Vorname) übernommen werden kann? C1 müsste ja nur durch H1 ergänzt werden und dazwischen ein Leerschritt.
Du willst den Vornamen auch im Namen des Worksheets haben? Dann würde dein Code so aussehen:
Sub BlattNameausC1()
Dim wks As Worksheet
For Each wks In Worksheets
wks.Name = wks.Range("H1").Value & " " & wks.Range("C1").Value
Next
End Sub
(ungetestet)
Das Hauptdatenblatt wird hierdurch allerdings auch angepasst.
Fast perfekt. Es sollte nur noch die Reihenfolge getauscht werden, d.h. Nachname Vorname.
Vielen Dank schon mal!
kennst du dich mit Makros aus?
Leider nicht. Habe bis jetzt versucht lediglich einige Codes einzugeben (rechte Maustaste auf Namen des Arbeitsblattes und dann eingefügt.) Hat soweit funktioniert bis auf dass die Namen der Blätter nicht aktualisiert wurden, wenn ich den Schülernamen auf der Seite 1 geändert habe.
probier mal bitte folgendes
Private Sub Worksheet_Change(ByVal Target As Range)
alert('hi')
End Sub
Wenn du das machst, sollte jede Änderung einer Zelle im Blatt Namen eine Bildschirmausgabe mit dem Betreff "hi" erzeugen. Damit kannst du prüfen, ob der Code überhaubt greift :-)
Im 2. Schritt solltest du eine Schleife anlegen und die Tabelle "Namen" durcharbeiten. Dazu mehr wenn wir wissen, der Code wird benutzt
"extras" -> "Makro" -> "VB - Code"
Dieses Fenster öffnen und auf "Namen" klicken, dort den fraglichen Code reinkopieren
Hallo, sorry, aber ich weiß nicht, wo ich das eingeben soll :-(
"Menü Extras" -> "Auswahl Makro" -> " Auswahl VB - Code" (evtl auch "visual Basic"
Registerkarte Entwicklertools -> Schaltfläche Makros. Makroname "Hi"
Schaltfläche "Erstellen"
Ich habe folgenden Code benutzt, mit dem alle Nachnamen aus C1 übernommen wurden.
Sub BlattNameausC1()
Dim wks As Worksheet
For Each wks In Worksheets
wks.Name = wks.Range("C1").Value
Next
End Sub
Allerdings möchte ich noch, dass die Vornamen aus H1 übernomen werden.
Hallo. Was heißt Haupttabellenblatt? Meine Datei besteht derzeit aus 34 Blättern. Blatt 1 ist die Liste mit den Nachnamen (B2 bis B34) und den Vornamen (C2 bis C34). Das nächste Blatt ist mein Notenblatt des 1. Schülers. Dort befindet sich im Feld C1 der Nachname und im Feld H1 der Vorname. Diese Namen bekommen die Notenblätter vom Blatt 1 (Namensliste). Jetzt möchte ich, dass alle Notenblätter benannt werden nach Name und Vorname des Schülers und automatisch geändert werden, wenn die Namensliste geändert wird.
Für mich als Laien leider viel zu kompliziert!