Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro, Datum für Arbtisblatt Fortlaufend

Forumthread: Makro, Datum für Arbtisblatt Fortlaufend

Makro, Datum für Arbtisblatt Fortlaufend
02.01.2018 16:31:05
Christian
Guten Tag,
Ziel:
Arbeitsblätter von Montag-Samstag das ganze Jahr, der Inhalt von Arbeitsblatt 1(Name Di, 02.01.2018) soll zusammen mit den Formeln/Inhalt kopiert werden.
Mit unten stehender Formel habe ich das soweit geschafft, leider nur bis Ende Jänner? und der Inhalt wird nicht Mitkopiert - Die Formel wurde hier im Forum gefunden, ich hoffe das ist kein Diebstahl :-)
Sub CreateWks()
Dim iCounter As Integer, iDays As Integer
Application.ScreenUpdating = False
iDays = Day(DateSerial(Year(Date), Month(Date) + 1, 0))
For iCounter = 1 To iDays
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Format( _
DateSerial(Year(Date), Month(Date), iCounter), _
Format:="ddd dd.mm.yy")
Next iCounter
Worksheets(1).Select
Application.ScreenUpdating = True
End Sub

Sorry für meine Unwissenheit, aber leider gestaltet das sich als nicht so leicht für mich ;)
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro, Datum für Arbtisblatt Fortlaufend
02.01.2018 16:45:09
Hajo_Zi

Option Explicit
Sub Makro1()
Dim DaAnfang As Date
Dim DaEnde As Date
Dim DaI As Date
DaAnfang = "02.01." & Year(Date)
DaEnde = "31.12." & Year(Date)
For DaI = DaAnfang To DaEnde
Sheets("Mo 01,01,18").Copy After:=Sheets(Worksheets.Count)
ActiveSheet.Name = Format(DaI, "ddd dd.mm.yy")
Next DaI
End Sub

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung....."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben,
mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige
AW: Makro, Datum für Arbtisblatt Fortlaufend
02.01.2018 16:59:00
Christian
Bekomme die Fehlermeldung: Index außerhalb des Gültigen Bereich
Also, habe in der Datei ein einziges Arbeitsblatt d.h. 02.01.2018 gehe auf Alt+F11 und gebe im Modul das Makro so ein:
Sub Makro1()
Dim DaAnfang As Date
Dim DaEnde As Date
Dim DaI As Date
DaAnfang = "02.01." & Year(Date)
DaEnde = "31.12." & Year(Date)
For DaI = DaAnfang To DaEnde
Sheets("Mo 01,01,18").Copy After:=Sheets(Worksheets.Count)
ActiveSheet.Name = Format(DaI, "ddd dd.mm.yy")
Next DaI
End Sub
gehe wieder ins Hauptfenster, klicke auf das Arbeitsblatt drücke F8 und füge das Makro ein. dann kommt o.g. Fehlermeldung!
Anzeige
AW: Makro, Datum für Arbtisblatt Fortlaufend
02.01.2018 17:01:08
Hajo_Zi
Gut bei mir beginnt das Jahr am 01.01.18, das ist also die erste Tabelle.
Falls das bei Dir nicht so ist musst Du es im Code ändern.

AW: Makro, Datum für Arbtisblatt Fortlaufend
02.01.2018 17:12:18
Christian
Okay, verstanden.
Ist es z.b. möglich jetzt das ganze ohne Sonntag zu gestalten?
Lg
AW: Makro, Datum für Arbtisblatt Fortlaufend
02.01.2018 17:25:39
Hajo_Zi

Option Explicit
Sub Makro1()
Dim DaAnfang As Date
Dim DaEnde As Date
Dim DaI As Date
DaAnfang = "02.01." & Year(Date)
DaEnde = "31.12." & Year(Date)
For DaI = DaAnfang To DaEnde
If Application.WorksheetFunction.Weekday(DaI, 2) 

Gruß Hajo
Anzeige
AW: Makro, Datum für Arbtisblatt Fortlaufend
03.01.2018 08:50:53
Christian
Danke für deine schnelle Hilfe! Echt sehr Nett!
- Leider ist da jetzt kein Samstag dabei?
AW:iWeekday(DaI, 2) < 7 oder <=6
03.01.2018 09:05:32
Gerd
Hallo Christian!
Gruß Gerd
AW: AW:iWeekday(DaI, 2) < 7 oder <=6
03.01.2018 09:34:01
Christian
Also dann so?

Sub Makro1()
Dim DaAnfang As Date
Dim DaEnde As Date
Dim DaI As Date
DaAnfang = "02.01." & Year(Date)
DaEnde = "31.12." & Year(Date)
For DaI = DaAnfang To DaEnde
If Application.WorksheetFunction.iWeekday(DaI, 2) 
?
Anzeige
AW: Klärungsversuch
03.01.2018 13:59:55
Gerd
Hallo Christian,
"oder.. " war ein Hinweis, kein Code.
Bitte entweder die Codezeile so
If Application.WorksheetFunction.Weekday(DaI, 2) 

oder so
If Application.WorksheetFunction.Weekday(DaI, 2) 
schreiben.
Gruß Gerd
Anzeige
AW: Klärungsversuch
03.01.2018 14:37:11
Christian
Perfekt, habe mich durchprobiert... habe mir schon gedacht das "Oder" ned beides passen kann...aber jetzt passts ja!
Also Zusammenfassend:
Wenn Jemand ein Makro braucht das von einem Registerblatt pro Tag im Jahr(Montag bis Samstag) im Format z.b. MO 01.01.2018 jeweils den Inhalt mitkopiert, dann dieses z.b.:
Sub Makro1()
Dim DaAnfang As Date
Dim DaEnde As Date
Dim DaI As Date
DaAnfang = "02.01." & Year(Date)
DaEnde = "31.12." & Year(Date)
For DaI = DaAnfang To DaEnde
If Application.WorksheetFunction.Weekday(DaI, 2) 

Dieses Thema ist für mich jetzt abgehackt! Danke an jeden Netten Herren/Damen die mir geholfen haben! :-) Viel Glück und Gesundheit für die Zukunft!
Anzeige
300+ Tabellen, viel Spaß beim Arbeiten! o.T.
02.01.2018 17:33:09
Sepp
Gruß Sepp

AW: 300+ Tabellen, viel Spaß beim Arbeiten! o.T.
02.01.2018 17:44:40
Christian
Sehr konstruktives Off Topic....
AW: 300+ Tabellen, viel Spaß beim Arbeiten! o.T.
02.01.2018 18:28:07
Sepp
Hallo Christian,
sorry, aber bei einer Tabelle mit über 300 Tabellen fällt mir nichts konstruktives mehr ein!
Gruß Sepp

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Makro für fortlaufende Datumsblätter in Excel


Schritt-für-Schritt-Anleitung

Um ein Makro zu erstellen, das fortlaufende Datumsblätter in Excel generiert, befolge diese Schritte:

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

  2. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen und wähle Modul.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub Makro1()
       Dim DaAnfang As Date
       Dim DaEnde As Date
       Dim DaI As Date
       DaAnfang = "02.01." & Year(Date)
       DaEnde = "31.12." & Year(Date)
       For DaI = DaAnfang To DaEnde
           If Application.WorksheetFunction.Weekday(DaI, 2) < 7 Then
               Sheets("Mo 01,01,18").Copy After:=Sheets(Worksheets.Count)
               ActiveSheet.Name = Format(DaI, "ddd dd.mm.yy")
           End If
       Next DaI
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zur Arbeitsmappe.

  5. Führe das Makro aus: Drücke Alt + F8, wähle Makro1 und klicke auf Ausführen.

Mit diesem Makro erhältst du fortlaufende Daten für Montag bis Samstag ohne Sonntage.


Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des gültigen Bereichs"

    • Lösung: Überprüfe, ob das Arbeitsblatt "Mo 01,01,18" tatsächlich existiert. Wenn nicht, ändere den Namen im Code zu einem bestehenden Arbeitsblatt.
  • Fehler: Arbeitsblätter werden nicht korrekt kopiert

    • Lösung: Stelle sicher, dass die Quell-Tabelle korrekt benannt ist und dass du das Makro im richtigen Kontext ausführst.

Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du auch folgende Methode nutzen:

  1. Schreibe das Startdatum in eine Zelle, z.B. A1.

  2. In der Zelle darunter (A2) gibst du die Formel ein:

    =A1 + 1
  3. Ziehe das kleine Quadrat in der unteren rechten Ecke von A2 nach unten, um fortlaufende Datumswerte zu erzeugen.

Diese Methode ist jedoch weniger automatisiert und nicht ideal für viele Arbeitsblätter.


Praktische Beispiele

  • Makro für ein ganzes Jahr ohne Sonntag: Das oben aufgeführte Makro kann leicht modifiziert werden, um auch Samstage einzubeziehen, indem du die Bedingung If Application.WorksheetFunction.Weekday(DaI, 2) < 7 anpasst.

  • Kopieren von Formeln: Um sicherzustellen, dass auch Formeln mitkopiert werden, kannst du die Zeile Sheets("Mo 01,01,18").Copy verwenden, wie im obigen Beispiel.


Tipps für Profis

  • Verwende dynamische Namen: Anstatt feste Blätter zu kopieren, kannst du die Namen der Blätter dynamisch generieren, um Fehler zu vermeiden.

  • Teste das Makro schrittweise: Nutze F8 im VBA-Editor, um den Code schrittweise auszuführen und eventuelle Fehler schneller zu finden.


FAQ: Häufige Fragen

1. Wie kann ich das Datum in einem anderen Format darstellen?
Du kannst das Format in der Zeile ActiveSheet.Name = Format(DaI, "ddd dd.mm.yy") anpassen, z.B. Format(DaI, "dd-mm-yyyy").

2. Funktioniert das Makro in allen Excel-Versionen?
Ja, das Makro sollte in allen aktuellen Excel-Versionen funktionieren, die VBA unterstützen. Achte darauf, dass du die richtigen Sicherheitsstufen für Makros eingestellt hast.

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