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 „Gefällt mir“
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