Wie Excel-Tabellenreiter automatisch beschriften?

Entweder du stupst das Makro mal wieder an, wenn es neue Sheets gibt oder rufst es automatisch auf:

In der Arbeitsmappe kann du dazu einen Event „Open“ verwenden.

Klicke im VBA Editor das Arbeitsblatt an
Code Anzeigen lassen
Workbook wählen (linke Auswahl)
Open wählen (rechte Auswahl)

Dann sollte das da stehen:
Private Sub Workbook_Open()

End Sub

dazwischen Worksheet_Change eintragen. Sieht dann so aus:

Private Sub Workbook_Open()
Worksheet_Change
End Sub

Nun werden die Sheets alle beim Öffnen umbenannt. (Außer sieh oben…)

Einfacher ist der Aufruf… Den kannst du spontan machen: Makro - ausfüren

fg

Dirk_P

Hallo Dir Pegasus,
vielen Dank für Deine Meldung. Ich habe den Zusatz ins Modul eingebaut, aber die Sheets werden trotzdem umbenannt.

Die automatsiche Umbenennung habe ich so gelöst, dass ich auf dem Sheet Teili einen Funktionsbutton eingerichtet und im die Funktion

Private Sub Reiterkorrektur_Click()
Call Worksheet_Change
End Sub

zugewiesen habe.
Schönen Gruß
Remedium

Heissen denn Deine Tabellen, die nicht umbenannt werden sollten, wirklich „Summe“ Or „Total“ Or „Betrag“? Das wäre ja ein Riesenzufall! Du musst hier die Namen Deiner Tabellen erfassen!
Niclaus

Hallo Niclaus,
ich habe eine Testdatei und darin die Sheet extra so benannt wie in Deinem Vorschlag.
Schönen Gruß
Remedium

ich habe eine Testdatei und darin die Sheet extra so benannt wie in Deinem Vorschlag.

Ich kann mir das nicht erklären. Bei mir funkt das so. Tut mir leid.
Grüsse Niclaus

oh, bitte nicht aufgeben. Wo könnte der Fehler liegen?
Gruß
Remedium

Vergiss, was ich oben gesagt habe. Versuche es mal so:

Sub Worksheet_Change()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
    If ws.Name = "Summe" Or ws.Name = "Total" Or ws.Name = "Betrag" Then GoTo weiter
    If ws.Cells(2, 3).Value <> "" Then
        If ws.Name <> "Teili" And Not sheetExists(ws.Cells(2, 3).Value) Then
            ws.Name = ws.Cells(2, 3).Value
        End If
    End If
weiter:
Next
End Sub

Function sheetExists(nameToFind)
Dim ws As Worksheet
sheetExists = False
For Each ws In ActiveWorkbook.Worksheets
    If UCase(ws.Name) = UCase(nameToFind) Then sheetExists = True
Next
End Function

Grüsse Niclaus

1 Like

Hallo Niclaus,
jetzt funktioniert es so wie gedacht. Großen Dank für die Unterstützung eines ahnungslosen VBA-Anwender.
Nun können die Nachwelt bzw. die Nachahmer ein geniales Programm verwenden.
Alles Gute
Remedium