Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabellenblatt kopieren und umbenennen

Tabellenblatt kopieren und umbenennen
28.12.2016 09:57:13
Carsten
Hallo,
ich habe folgendes Problem.
Ich habe ein Standard-Tabellenblatt mit Namen "Tag_Muster". Dieses Tabellenblatt soll kopiert und rechts angefügt werden.
Ich muss dieses Blatt für ein Jahr anlegen. Also vom So., 01.01.2017 bis Mo., 01.01.2018.
Das Blatt soll kopiert und gleichzeitig umgenannt werden.
Ich benötige jedoch nur die Wochentage Montag bis Freitag.
Ich habe zwar schon ein Makro gefunden, das hilft mir jedoch nur bedingt weiter, da es nur eine Tabelle anlegt und umbenennt.
Mir fehlen in dem Makro folgende Schritte:
das Kopieren meiner Mustertabelle und
ich benötige nicht alle sieben Wochentage, sondern nur Montag bis Freitag.
Vielen Dank für Eure Hilfe!
Gruss Carsten
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt kopieren und umbenennen
28.12.2016 10:23:16
guenni
Hallo Carsten,
Du hast vergessen, die Mustertabelle beizulegen
Gruß,
Günther
AW: Tabellenblatt kopieren und umbenennen
28.12.2016 11:18:31
Carsten
Jetzt habe ich Sie beigefügt.
AW: Tabellenblatt kopieren und umbenennen
28.12.2016 10:29:08
Tino
Hallo,
verstehe ich dich richtig,
Du möchtest für jeden Wochentag diese Mustertabelle kopieren?
Dann hast Du in der Datei ca. 260 Tabellen?!
Gruß Tino
Anzeige
AW: Tabellenblatt kopieren und umbenennen
28.12.2016 11:19:23
Carsten
Ja, das ist korrekt. Das ganze Jahr in einer Tabelle.
AW: Tabellenblatt kopieren und umbenennen
28.12.2016 13:48:29
Tino
Hallo,
ok. hier eine Version zum testen!
Sub Makro1()
Dim oMuster As Worksheet
Dim tmpDate As Date
Dim DateVon As Date, DateBis As Date

DateVon = DateSerial(2017, 1, 1)
DateBis = DateSerial(2017, 12, 31)

Set oMuster = Worksheets("Tag_Muster")

For tmpDate = DateVon To DateBis
If Weekday(tmpDate, vbMonday) < 6 Then
If Not CheckTabelle(Format(tmpDate, "ddd/, dd/mm/yyyy")) Then
oMuster.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
With Worksheets(ThisWorkbook.Sheets.Count)
.Name = Format(tmpDate, "ddd/, dd/mm/yyyy")
End With
End If
End If
Next

End Sub
Function CheckTabelle(strTabName$) As Boolean
On Error Resume Next
CheckTabelle = ThisWorkbook.Sheets(strTabName).Index <> 0
On Error GoTo 0
End Function
Gruß Tino
Anzeige
AW: Tabellenblatt kopieren und umbenennen
28.12.2016 14:28:02
Carsten
Hallo Tino,
das ist absolut perfekt! Vielen, vielen Dank!
Das hat mir echt viel Mühen erspart!
Dir einen guten Rutsch ins neue Jahr!
Viele Grüße
Carsten
AW: Tabellenblatt kopieren und umbenennen
28.12.2016 10:31:16
Christian
Hallo Carsten,
ich kann nicht empfehlen, ca. 260 Tabellenblätter mit gleichem Aufbau anzulegen.
Wenn du später etwas am Aufbau änderst, musst du das dann x mal ändern.
Besser:
Daten gleicher Struktur in eine Tabelle schreiben.
Hier kannst du filtern, sortieren, etc.
Ebenso kannst du die Daten eines Tages in dein "Muster-Tab" per Formel übertragen, und das Datum kannst du im "Muster-Tab" wählen.
Aber - Wille, Himmelreich und alles - hier ein Bsp für deine x Tabs:
Option Explicit
Sub TestIt()
Dim i As Long
Dim datBgn As Date
Dim datEnd As Date
datBgn = "01.01.2017"
datEnd = "10.01.2017"
Application.ScreenUpdating = False
For i = datBgn To datEnd
If Weekday(i, 2) 
Gruß
Christian
Anzeige
AW: Tabellenblatt kopieren und umbenennen
28.12.2016 11:21:35
Carsten
Hi, danke für Deine Hilfe. Ich habe natürlich das Kontrollhäckchen nicht genutzt und zudem nicht direkt auf Deinen Tip geantwortet. Sorry. Das erste mal tut noch weh.
Meine Anmerkungen findest Du in einem weiteren Beitrag von mir.
Gruss
Carsten
AW: Tabellenblatt kopieren und umbenennen
28.12.2016 10:41:23
Carsten
Hi,
vielen Dank für Eure schnellen Antworten.
Hier ist zunächst die Tabelle.
https://www.herber.de/bbs/user/110215.xlsm
Ich gebe Euch recht, dass eine Tabelle mit 260 blättern wirklich müßig ist. ;-)
In dieser Tabelle werden die Tagesstände eingetragen. Mein Chef möchte es halt so.
Wenn ich die Lösung von Christian richtig verstanden habe, muss ich das Enddatum lediglich auf den 01.01.2018 setzen und dann sollte es klappen.
Ich werde es gleich probieren.
Gruss
Carsten
Anzeige
AW: Tabellenblatt kopieren und umbenennen
28.12.2016 10:44:30
Carsten
Hallo Christian,
das sieht schon ganz klasse aus.
Jetzt benötige ich vor dem Datum noch den entsprechenden Wochentag.
Mo, 02.01.2017 Di, 03.01.2017 usw.
Dann wäre es perfekt! ;-)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblatt kopieren und umbenennen in Excel


Schritt-für-Schritt-Anleitung

Um ein Tabellenblatt in Excel zu kopieren und umzubenennen, kannst du ein einfaches VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

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

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (dein Dokument)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub Makro1()
       Dim oMuster As Worksheet
       Dim tmpDate As Date
       Dim DateVon As Date, DateBis As Date
    
       DateVon = DateSerial(2017, 1, 1)
       DateBis = DateSerial(2017, 12, 31)
    
       Set oMuster = Worksheets("Tag_Muster")
    
       For tmpDate = DateVon To DateBis
           If Weekday(tmpDate, vbMonday) < 6 Then
               If Not CheckTabelle(Format(tmpDate, "ddd/, dd/mm/yyyy")) Then
                   oMuster.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
                   With Worksheets(ThisWorkbook.Sheets.Count)
                       .Name = Format(tmpDate, "ddd/, dd/mm/yyyy")
                   End With
               End If
           End If
       Next
    
    End Sub
    
    Function CheckTabelle(strTabName As String) As Boolean
       On Error Resume Next
       CheckTabelle = ThisWorkbook.Sheets(strTabName).Index <> 0
       On Error GoTo 0
    End Function
  4. Starte das Makro: Schließe den VBA-Editor, gehe zurück zu Excel und drücke ALT + F8, wähle Makro1 aus und klicke auf "Ausführen".

Dies kopiert das "Tag_Muster"-Tabellenblatt für jeden Wochentag im Jahr 2017 und benennt es entsprechend um.


Häufige Fehler und Lösungen

  • Fehler: "Subscript out of range"
    Dieser Fehler tritt auf, wenn der Name des zu kopierenden Blattes nicht korrekt ist. Stelle sicher, dass das Blatt "Tag_Muster" genau so heißt.

  • Fehler: "Name already exists"
    Das passiert, wenn du versuchst, ein bereits existierendes Blatt umzubenennen. Stelle sicher, dass du die Funktion CheckTabelle korrekt implementiert hast.


Alternative Methoden

Wenn du lieber ohne VBA arbeiten möchtest, kannst du auch die Funktion "Blatt duplizieren" verwenden:

  1. Rechtsklick auf das Tabellenblatt "Tag_Muster".
  2. Wähle "Verschieben oder Kopieren".
  3. Aktiviere das Kontrollkästchen "Eine Kopie erstellen" und klicke auf "OK".
  4. Benenne das neue Blatt manuell um.

Diese Methode ist jedoch weniger automatisiert und erfordert manuelle Umbenennungen.


Praktische Beispiele

Hier ist ein Beispiel für das Erstellen von Wochentagen:

Sub Beispiel()
    Dim i As Long
    Dim datBgn As Date
    Dim datEnd As Date
    datBgn = "01.01.2017"
    datEnd = "10.01.2017"

    For i = datBgn To datEnd
        If Weekday(i, 2) < 6 Then
            Debug.Print Format(i, "dddd, dd.mm.yyyy")
        End If
    Next i
End Sub

Dieses Skript gibt die Wochentage zwischen dem 1. und 10. Januar 2017 aus.


Tipps für Profis

  • Verwende Named Ranges: Um die Verwaltung der Daten zu erleichtern, kannst du benannte Bereiche in Excel verwenden.
  • Optimierung des VBA-Codes: Setze Application.ScreenUpdating = False am Anfang deines Makros, um die Ausführungsgeschwindigkeit zu erhöhen.
  • Fehlerbehandlung: Integriere eine Fehlerbehandlung in deinem Code, um unerwartete Probleme zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um nur bestimmte Wochentage zu kopieren?
Du kannst die Bedingung in der Schleife anpassen, um nur bestimmte Wochentage wie Montag bis Freitag zu berücksichtigen.

2. Gibt es eine Möglichkeit, das Makro automatisch zu starten?
Ja, Du kannst das Makro beim Öffnen der Datei automatisch ausführen lassen, indem du es in die Workbook_Open-Ereignisprozedur in ThisWorkbook einfügst.

3. Wie kann ich die Anzahl der zu kopierenden Blätter reduzieren?
Du kannst die DateVon und DateBis Variablen anpassen, um nur einen bestimmten Zeitraum abzudecken.

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