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

Forumthread: Sheet kopieren und umbenennen (VBA)

Sheet kopieren und umbenennen (VBA)
19.03.2009 14:30:00
Torsten
Hallo beisammen,
mit folgendem Makro kann ich ein WS kopieren und ans Ende plazieren:

Private Sub cmb_Switch_Click()
If MsgBox("Soll der nächste Monat vorbereitet werden?", vbYesNo) = vbYes Then
ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
Else
End If
End Sub


Das erste WS lautet auf "01.2009". Demnach möchte ich nach dem Kopieren das neue WS auf "02.2009" umbenennen und dieses im nächsten Monat (überraschenderweise) auf "03.2009" umbenennen. Der Code liegt hinter dem WS und das WS des nächsten Monats wird immer aus dem WS des vorhergehenden Monats heraus kopiert. Könnt Ihr mir behilflich sein, das in VBA umzusetzen?
Vielen Dank im voraus.
Gruß
Torsten

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheet kopieren und umbenennen (VBA)
19.03.2009 14:47:07
Jogy
Hi.

Private Sub cmb_Switch_Click()
If MsgBox("Soll der nächste Monat vorbereitet werden?", vbYesNo) = vbYes Then
ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = Format(DateAdd("m", 1, "01." & Worksheets( _
Worksheets.Count - 1).Name), "mm.yyyy")
End If
End Sub


Solange Du dieses Namensformat beibehälst, dann klappt das. Bei einer Änderung aller Wahrscheinlichkeit nach nicht mehr.
Gruss, Jogy

Anzeige
AW: erledigt - mT
19.03.2009 14:57:11
Torsten
Hallo Jogy,
perfekt - das hätte ich alleine nie zusammenbekommen.
Den Hinweis mit dem Namensformat habe ich überprüft und den Punkt durch einen Unterstrich ersetzt (01.2009 / 01_2009) - das Makro bricht ab. Auch hier liegst Du richtig.
Vielen Dank für Deine Hilfe.
Gruß
Torsten
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: Tabellenblatt kopieren und umbenennen


Schritt-für-Schritt-Anleitung

Um ein Excel VBA Makro zu erstellen, das ein Tabellenblatt kopiert und umbenennt, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf dein Projekt klickst und Einfügen > Modul auswählst.

  3. Kopiere den folgenden Code in das Modul:

    Private Sub cmb_Switch_Click()
        If MsgBox("Soll der nächste Monat vorbereitet werden?", vbYesNo) = vbYes Then
            ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
            Worksheets(Worksheets.Count).Name = Format(DateAdd("m", 1, "01." & Worksheets(Worksheets.Count - 1).Name), "mm.yyyy")
        End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Füge einen Button in dein Arbeitsblatt ein und weise ihm das Makro cmb_Switch_Click zu.

Jetzt kannst Du den Button verwenden, um das aktive Blatt zu kopieren und automatisch umzubenennen.


Häufige Fehler und Lösungen

  • Fehler: "Der Name ist ungültig"

    • Lösung: Stelle sicher, dass der neue Name des Blattes den Excel-Namensregeln entspricht (keine Sonderzeichen, nicht länger als 31 Zeichen).
  • Fehler: Das Makro wird nicht ausgeführt

    • Lösung: Überprüfe, ob das Makro richtig zugewiesen ist und dass die Makros in den Excel-Optionen aktiviert sind.

Alternative Methoden

Wenn Du das Tabellenblatt kopieren und umbenennen möchtest, gibt es auch andere Ansätze:

  • Excel-Makro zur automatischen Namensgebung: Du kannst eine Funktion erstellen, die den Namen basierend auf dem aktuellen Datum oder einer benutzerdefinierten Logik generiert.

    Function GenerateSheetName() As String
        GenerateSheetName = Format(DateAdd("m", 1, Date), "mm.yyyy")
    End Function
  • VBA zur Kopie in eine neue Arbeitsmappe:

    ActiveSheet.Copy
    ActiveWorkbook.SaveAs "NeuesWorkbook.xlsx"

Praktische Beispiele

Nehmen wir an, Dein aktuelles Arbeitsblatt heißt "01.2009". Mit dem oben genannten Makro wird das neue Blatt "02.2009" heißen, wenn Du auf den Button klickst. Wenn Du das Makro erneut ausführst, wird das nächste Blatt automatisch auf "03.2009" umbenannt.


Tipps für Profis

  • Verwende die Funktion On Error Resume Next, um Fehler zu umgehen, wenn der Name eines Blattes bereits existiert.

    On Error Resume Next
    Worksheets(Worksheets.Count).Name = "NeuerName"
    On Error GoTo 0
  • Du kannst auch Bedingungen hinzufügen, um das Blatt nur zu kopieren, wenn es bestimmte Kriterien erfüllt, z.B. nur wenn es Daten enthält.


FAQ: Häufige Fragen

1. Wie kann ich das Tabellenblatt automatisch kopieren und umbenennen?
Mit dem oben beschriebenen VBA-Code kannst Du das aktive Blatt einfach kopieren und umbenennen, indem Du den Button klickst.

2. Ist es möglich, das Blatt in eine neue Arbeitsmappe zu kopieren?
Ja, Du kannst den Befehl ActiveSheet.Copy verwenden, um das Blatt in eine neue Arbeitsmappe zu kopieren. Danach musst Du die Arbeitsmappe speichern.

3. Was passiert, wenn der Name des neuen Blattes bereits existiert?
Das Makro wird einen Fehler auslösen, wenn der Name bereits existiert. Verwende On Error Resume Next, um diesen Fehler zu umgehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige