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

Forumthread: Monat pro Tabellenblatt

Monat pro Tabellenblatt
06.12.2016 12:30:56
Gabi
Hallo Zusammen,
ich habe eine Datei, die verschiedene Tabellenblätter mit den Monatsnamen enthalten soll. Hierfür soll die ebenfalls enthaltene Vorlage inklusive deren Formatierungen jeweils auf das für ein neues Monat angelegte Tabellenblatt kopiert werden. Zugleich soll auf jedem neu angelegten Tabellenblatt der erste des Monats (z.B. 01.11.2016) in der Zelle "M3" hinterlegt sein. Diese Zelle ist in der Vorlage bereits als Datum formatiert. Damit ich diese nicht einzeln anlegen und kopieren muss, hatte ich die Hoffnung, dass es mit einer einfachen Formel funktionieren könnte. Allerdings bin ich bisher nur so weit gekommen. Und das funktioniert irgendwie nicht wie es soll...
Sub NeuerMonat()
Dim strFile As String
Dim lngCalc As Long
Dim lngTMP As Long
Dim D As Date
Dim i As Integer
Dim mZahl As Integer
Dim mWort As String
Dim yZahl As String
Dim dZahl As String
On Error GoTo Fin
For i = 1 To 2
D = "01.11.2016"
mZahl = Month(DateSerial(Year(D), Month(D) + i, 1))
mWort = Format(mZahl, "mmmm")
yZahl = Year(DateSerial(Year(D), Month(D) + i, 1))
dZahl = Day(DateSerial(Year(D), Month(D) + i, 1))
Debug.Print mZahl
Debug.Print mWort
Debug.Print yZahl
Debug.Print dZahl
strFile = ThisWorkbook.Path & Application.PathSeparator & "Vorlage.xltx"
With Application
.ScreenUpdating = False
.AskToUpdateLinks = False
.EnableEvents = False
lngCalc = .Calculation
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
ThisWorkbook.Worksheets("Vorlage").visible = xlSheetVisible
ThisWorkbook.Worksheets("Vorlage").Copy After:=ThisWorkbook.Worksheets( _
Worksheets.count)
ThisWorkbook.Worksheets(Worksheets.count).name = mWort & " 2016"
ThisWorkbook.Worksheets(Worksheets.count).Cells(3, 13).Value = dZahl  & "." &  _
mZahl & "." & yZahl
Next i
Die Ausgabe mit Debug.Print ergibt allerdings folgendes:
 12
Januar
2016
1
1
Dezember
2017
1
Somit passt der geschriebene Monat irgendwie nicht zum Monat in Zahlenform. Und den Inhalt der Zelle "M3" übernimmt es nicht als Datum.... Kann mir jemand weiterhelfen?
Liebe Grüße
Gabi
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Monat pro Tabellenblatt
06.12.2016 13:04:22
Rudi
Hallo,
MZahl=12 --&gt 12 ist der 12.1.1900, d.h. Januar
mWort = MonthName(mZahl)
Gruß
Rudi
AW: Monat pro Tabellenblatt
06.12.2016 13:32:59
UweD
Hallo
Die Aufteilung in die Einzelelemente benötigst du nicht..
Außerdem hab ich Teile ausserhalb der Schleife plaziert, die nur 1x benötigt werden und nicht bei jedem Monat neu
Sub NeuerMonat()
    Dim strFile As String
    Dim lngCalc As Long
    Dim lngTMP As Long
    Dim D As Date
    Dim i As Integer

    On Error GoTo fin
    strFile = ThisWorkbook.Path & Application.PathSeparator & "Vorlage.xltx"
    With Application
        .ScreenUpdating = False
        .AskToUpdateLinks = False
        .EnableEvents = False
        lngCalc = .Calculation
        .Calculation = xlCalculationManual
        .DisplayAlerts = False
    End With
    ThisWorkbook.Worksheets("Vorlage").Visible = xlSheetVisible
    For i = 1 To 12
        D = DateSerial(Year(Date), Month(Date) + i, 1)
        ThisWorkbook.Worksheets("Vorlage").Copy _
            After:=ThisWorkbook.Worksheets(Worksheets.Count)
        ThisWorkbook.Worksheets(Worksheets.Count).Name = Format(D, "MMMM YYYY")
        ThisWorkbook.Worksheets(Worksheets.Count).Cells(3, 13).Value = _
            Format(D, "D.MM.YYYY")
    Next i
fin:
' hier fehlt noch die Rücksetzung 

End Sub

LG UweD
Anzeige
AW: Monat pro Tabellenblatt
06.12.2016 17:44:48
Gabi
Hallo ihr beiden,
vielen lieben Dank für die schnelle Antwort. Es funktioniert wunderbar!
Liebe Grüße
Gabi
AW: gern geschehen owt
07.12.2016 08:27:04
UweD
;
Anzeige
Anzeige

Infobox / Tutorial

Monat pro Tabellenblatt in Excel erstellen


Schritt-für-Schritt-Anleitung

Um in Excel für jeden Monat ein Tabellenblatt zu erstellen und dabei die Vorlage mit dem Monatsnamen zu versehen, kannst Du die folgende VBA-Prozedur verwenden:

  1. Öffne Deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den folgenden Code in das Modul:
Sub NeuerMonat()
    Dim strFile As String
    Dim lngCalc As Long
    Dim D As Date
    Dim i As Integer

    strFile = ThisWorkbook.Path & Application.PathSeparator & "Vorlage.xltx"

    With Application
        .ScreenUpdating = False
        .AskToUpdateLinks = False
        .EnableEvents = False
        lngCalc = .Calculation
        .Calculation = xlCalculationManual
        .DisplayAlerts = False
    End With

    ThisWorkbook.Worksheets("Vorlage").Visible = xlSheetVisible

    For i = 1 To 12
        D = DateSerial(Year(Date), Month(Date) + i, 1)
        ThisWorkbook.Worksheets("Vorlage").Copy After:=ThisWorkbook.Worksheets(Worksheets.Count)
        ThisWorkbook.Worksheets(Worksheets.Count).Name = Format(D, "MMMM YYYY")
        ThisWorkbook.Worksheets(Worksheets.Count).Cells(3, 13).Value = Format(D, "D.MM.YYYY")
    Next i

    ' Rücksetzung der Anwendungseinstellungen
    With Application
        .ScreenUpdating = True
        .Calculation = lngCalc
        .DisplayAlerts = True
        .EnableEvents = True
    End With
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Drücke ALT + F8, wähle NeuerMonat aus und klicke auf Ausführen.

Diese Prozedur erstellt für jeden Monat ein neues Tabellenblatt und trägt das Datum in der Zelle "M3" ein.


Häufige Fehler und Lösungen

  • Problem: Der Monat wird nicht korrekt angezeigt.
    Lösung: Stelle sicher, dass Du Format(D, "MMMM YYYY") verwendest, um den Monatsnamen korrekt darzustellen.

  • Problem: Die Zelle "M3" zeigt kein Datum an.
    Lösung: Überprüfe, ob Du den richtigen Formatstring "D.MM.YYYY" verwendest, um das Datum korrekt darzustellen.


Alternative Methoden

Wenn Du kein VBA verwenden möchtest, kannst Du auch manuell Tabellenblätter erstellen:

  1. Klicke mit der rechten Maustaste auf ein bestehendes Tabellenblatt und wähle Verschieben oder Kopieren.
  2. Wähle "Neues Blatt" und benenne es nach dem gewünschten Monat.
  3. Wiederhole diesen Vorgang für jeden Monat.

Ein Nachteil dieser Methode ist, dass Du die Formatierungen und Inhalte manuell kopieren musst.


Praktische Beispiele

Hier ist ein Beispiel für die Verwendung der VBA-Prozedur:

  1. Du hast eine Vorlage namens "Vorlage.xltx".
  2. Nach dem Ausführen des Makros hast Du zwölf neue Tabellenblätter: "Januar 2023", "Februar 2023", ..., "Dezember 2023".
  3. In jeder dieser Blätter steht das Datum "01.MM.YYYY" in der Zelle "M3".

Tipps für Profis

  • Verwende Kommentare im Code, um wichtige Abschnitte zu kennzeichnen.
  • Teste den Code in einer Kopie Deiner Excel-Datei, um versehentliche Datenverluste zu vermeiden.
  • Du kannst den Code anpassen, um auch spezifische Formatierungen für die neuen Tabellenblätter zu setzen.

FAQ: Häufige Fragen

1. Wie viele Monate kann ich mit diesem Skript erstellen?
Das Skript erstellt für alle 12 Monate ein neues Tabellenblatt. Du kannst den Wert in der Schleife anpassen.

2. Funktioniert das Skript in jeder Excel-Version?
Ja, das Skript sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen. Stelle sicher, dass Makros aktiviert sind.

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