Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabellenblätter nach nächstem Monat benennen

Forumthread: Tabellenblätter nach nächstem Monat benennen

Tabellenblätter nach nächstem Monat benennen
22.12.2016 17:21:47
Andreas
Guten Abend,
vermutlich ist das Ganze recht simpel, dennoch komme ich nicht drauf und die Suchfunktion hat mir bisher auch nicht wirklich weitergeholfen.
Ich möchte einfach per Mausklick das aktuelle Tabellenblatt ans Ende kopieren und es soll als Namen den des nächsten Monats haben.
Tabellenblatt 1 heißt "Jan17"
Das nächste soll dann "Feb17" heißen oder wegen mir auch in einem anderen Datumsformat.
Ich komme aber mit den Parametern der DateValue Funktion nicht zurecht
Private Sub CommandButton1_Click()
Dim wsNew As Worksheet
wsNew.Copy after:=Sheets(Sheets.Count)
wsNew.Name = Format(DateValue(.Previous.Name) + 1)
End Sub

Vielen Dank schon einmal
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter nach nächstem Monat benennen
22.12.2016 20:26:23
Dieter
Hallo Andreas,
du könntest das mit dem folgenden Programm machen:

Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim sh As Object
Dim wsNew As Worksheet
Dim zf As String
zf = Format$(DateAdd("m", 1, Date), "mmmyy")
Set wb = ThisWorkbook
ActiveSheet.Copy After:=wb.Sheets(wb.Sheets.Count)
Set wsNew = ActiveSheet
Application.DisplayAlerts = False
For Each sh In wb.Sheets
If UCase$(sh.Name) = UCase$(zf) Then sh.Delete
Next sh
Application.DisplayAlerts = True
wsNew.Name = zf
End Sub
Viele Grüße
Dieter
Anzeige
AW: Tabellenblätter nach nächstem Monat benennen
23.12.2016 07:59:38
Andreas
Guten Morgen Dieter,
das funktioniert leider nur einmal, bei jedem weiteren Klick kommt "Automatierungsfehler".
AW: Tabellenblätter nach nächstem Monat benennen
23.12.2016 10:41:24
Dieter
Hallo Andreas,
am besten wäre es, wenn du deine Datei hochladen könntest. Daten können verändert und/oder anonymisiert sein.
Viele Grüße
Dieter
AW: Tabellenblätter nach nächstem Monat benennen
23.12.2016 11:38:49
Andreas
Hallo Dieter,
ich kann die Tabelle leider nicht von der Arbeit aus hochladen. Mache ich später.
Ich denke mal das dein Code funktioniert wenn ich ihn im Januar das nächste mal ausführe.
Aber ich würde es gerne unabhängig vom aktuellen Datum machen.
MfG Andreas
Anzeige
AW: Tabellenblätter nach nächstem Monat benennen
23.12.2016 18:57:27
Dieter
Hallo Andreas, hallo Michael,
ich war davon ausgegangen, dass sich der CommandButton1 in einer UserForm befindet. Wenn er sich in dem zu kopierenden Blatt befindet, dann funktioniert natürlich bei der zweiten Ausführung das vorsorgliche Löschen nicht, da man ein Blatt nicht entfernen kann, wenn in diesem Blatt ein Button ist, von dem aus das "Blattentfernungsprogramm" gestartet wurde.
Wenn die Ausführung vom aktuellen Datum unabhängig sein soll, dann ist der Code von Michael vorzuziehen. Allerding gibt es dann ein Problem, wenn man zweimal auf den Button eines der bereits mit einem Monatsnamen versehehenen Blätter klickt.
Das lässt sich durch die folgende Ergänzung beheben:

Private Sub CommandButton1_Click()
Dim sh As Object
Dim Mon$, Jhr$, i&
Jhr = Right(Me.Name, 2)
Select Case Left(Me.Name, 3)
Case Is = "Jan": Mon = "Feb"
Case Is = "Feb": Mon = "Mär"
Case Is = "Mär": Mon = "Apr"
Case Is = "Apr": Mon = "Mai"
Case Is = "Mai": Mon = "Jun"
Case Is = "Jun": Mon = "Jul"
Case Is = "Jul": Mon = "Aug"
Case Is = "Aug": Mon = "Sep"
Case Is = "Sep": Mon = "Okt"
Case Is = "Okt": Mon = "Nov"
Case Is = "Nov": Mon = "Dez"
Case Is = "Dez": Mon = "Jan": Jhr = Jhr + 1
End Select
' Falls das gewünschte Blatt schon existiert, wird es nur aktiviert
For Each sh In ThisWorkbook.Sheets
If UCase$(sh.Name) = UCase$(Mon & Jhr) Then
sh.Activate
Exit Sub
End If
Next sh
Me.Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ActiveSheet.Name = Mon & Jhr
End Sub
Viele Grüße an euch beide
Dieter
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblätter nach dem nächsten Monat benennen


Schritt-für-Schritt-Anleitung

Um ein Excel-Tabellenblatt nach dem nächsten Monat zu benennen und fortlaufend neue Blätter zu erstellen, kannst Du den folgenden VBA-Code verwenden. Dieser Code kopiert das aktuelle Blatt und benennt es entsprechend:

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Private Sub CommandButton1_Click()
    Dim sh As Object
    Dim Mon$, Jhr$, i
    Jhr = Right(Me.Name, 2)
    Select Case Left(Me.Name, 3)
        Case Is = "Jan": Mon = "Feb"
        Case Is = "Feb": Mon = "Mär"
        Case Is = "Mär": Mon = "Apr"
        Case Is = "Apr": Mon = "Mai"
        Case Is = "Mai": Mon = "Jun"
        Case Is = "Jun": Mon = "Jul"
        Case Is = "Jul": Mon = "Aug"
        Case Is = "Aug": Mon = "Sep"
        Case Is = "Sep": Mon = "Okt"
        Case Is = "Okt": Mon = "Nov"
        Case Is = "Nov": Mon = "Dez"
        Case Is = "Dez": Mon = "Jan": Jhr = Jhr + 1
    End Select
    ' Falls das gewünschte Blatt schon existiert, wird es nur aktiviert
    For Each sh In ThisWorkbook.Sheets
        If UCase$(sh.Name) = UCase$(Mon & Jhr) Then
            sh.Activate
            Exit Sub
        End If
    Next sh
    Me.Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
    ActiveSheet.Name = Mon & Jhr
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Füge einen CommandButton auf die Arbeitsblattoberfläche ein und verlinke ihn mit dem oben eingefügten Code.

Jetzt kannst Du mit einem Mausklick mehrere Tabellenblätter umbenennen und fortlaufend neue Blätter erstellen.


Häufige Fehler und Lösungen

  • Automatisierungsfehler beim zweiten Klick:

    • Dies passiert, wenn der Button im Blatt ist, das Du kopierst. Stelle sicher, dass der Button in einem anderen Blatt oder in einer UserForm untergebracht ist.
  • Blatt existiert bereits:

    • Der Code prüft, ob ein Blatt mit dem gleichen Namen existiert. Falls ja, wird das bestehende Blatt aktiviert, anstatt ein neues zu erstellen.

Alternative Methoden

Eine weitere Methode besteht darin, den Namen des neuen Blattes direkt in der Benutzeroberfläche zu ändern, anstatt VBA zu verwenden. Du kannst die Funktion "Blatt umbenennen" im Kontextmenü verwenden, um Blätter manuell zu benennen. Diese Methode ist jedoch nicht automatisiert und eignet sich eher für eine einmalige Umbenennung.


Praktische Beispiele

  • Wenn das aktuelle Blatt "Jan23" heißt und Du auf den Button klickst, wird ein neues Blatt mit dem Namen "Feb23" erstellt.
  • Bei jedem Klick wird das Tabellenblatt fortlaufend um einen Monat erhöht, also von "Feb23" zu "Mär23" usw.

Tipps für Profis

  • Verwende die Funktion DateAdd in VBA, um das aktuelle Datum zu verwenden und darauf basierend den nächsten Monat zu bestimmen. Das macht Deinen Code flexibler und weniger anfällig für Fehler.
Dim zf As String
zf = Format$(DateAdd("m", 1, Date), "mmmyy")
  • Wenn Du mehrere Tabellenblätter umbenennen möchtest, kannst Du eine Schleife in Deinem VBA-Code hinzufügen, um dies effizient zu gestalten.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Tabellenblätter gleichzeitig umbenennen?
Du kannst eine Schleife in Deinen VBA-Code einfügen, um durch alle gewünschten Blätter zu iterieren und deren Namen zu ändern.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der VBA-Code sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren, solange die Makros aktiviert sind.

3. Was mache ich, wenn ich einen Fehler in der VBA-Anwendung habe?
Überprüfe, ob der Code korrekt eingefügt wurde und keine Syntaxfehler enthält. Du kannst auch den VBA-Editor öffnen und die Ausführung schrittweise verfolgen, um den Fehler zu lokalisieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige