Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1720to1724
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

nach Seitenumbruch neue kopfzeile mit Code generieren

nach Seitenumbruch neue kopfzeile mit Code generieren
15.11.2019 09:12:04
Manuel
Hallo Zusammen,
folgendes Problem:
ich habe eine Zeittabelle in der die einzelnen Tage (auch Wochenenden) aufgeführt sind.
per bedingte formatierung habe ich alles Layouttechnisch schonmal angepasst.
nun soll es einen schritt weiter gehen:
in A4 bis Axxx steht das jeweilige Datum, in Spalte B bis J die Zeitrechnungen, die gemacht werden müssen.
Per Makro lass ich mir nach jedem Monat einen Seitenumbruch erstellen. (wurde nicht von mir erstellt, hab ein ähnliches gefunden und abgeändert)
nun soll mir noch per Makro beim Drucken jeweils eine andere Kopfzeile / Überschrift zugeordnet werden.
Als Überschrift soll der Monat und das Jahr des ersten Datums auf der Seite sein. (ist alles nur 1 Monat, muss also nicht der erste Eintrag sein). Format hierfür ist MMMM JJJJ
Die Zeiten stehen alle in einem Tabellenblatt und sollen auch nicht auf weitere Tabellenblätter aufgeteilt werden.
ich stelle mir das folgendermaßen vor:
Makro aufrufen, Zeilenumbrüche erstellen, bei jedem Zeilenumbruch jeweils aus der ersten Zelle (Axxx) das datum rausziehen und die als Überschrift setzen.
für eine manuelle Überschrift hab ich derzeit =TEXT(A4;"MMMM JJJJ") genommen, ist aber umständlich da jeden Abschnitt einzeln auszuwählen, die Bezugszelle zu ändern...
Hier 2 Makros, die ich gefunden habe, aber nicht weiß, wie ich die miteinander koppeln kann.
automatischer Seitenumbruch nach jedem Monat

Sub Automatischer_Seitenumbruch_nach_jedem_Monat()
Dim mon As Integer, r As Range, c As Range
ActiveSheet.Cells.PageBreak = xlPageBreakNone
Set r = Range("A4:A999")
mon = tVal(Range("A4")) 'in A4 muss ein Wert stehen!
For Each c In r
If tVal(c) > mon Then
mon = tVal(c)
ActiveWindow.SelectedSheets.HPageBreaks.Add before:=c
End If
Next
End Sub

Function tVal(z As Range) As Long
tVal = Int(Month(z) / 1 + 0.5) + Year(z) * 12
End Function

Unterschiedliche Kopfzeile

Sub unteschiedlicheKopfzeile()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
With Sh.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.Zoom = 100
End With
Next Sh
Application.ScreenUpdating = False
Range("C1:H37").Select
Selection.PrintOut Copies:=1
Range("C7").Select
End Sub

bei Fragen bzw. unklaren Aussagen meinerseits gerne melden!
grüße
Manuel

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nach Seitenumbruch neue kopfzeile mit Code generieren
15.11.2019 11:38:05
Daniel
HI
schwierig.
in Excel hat jede Seite die selbe Kopf- und Fußzeile.
wenn du da unterschiede willst, musst du jeden Monat separat ausdrucken.
dazu könntest du folgendes Makro verwenden:
das Makro läuft durch die Zellen und druckt bei jedem Monatswechsel die Zellen für diesen Monat separat aus.
Sub Druck()
Dim Zelle1 As Range
Dim Zelle2 As Range
Set Zelle2 = Range("A4")
Set Zelle1 = Range("A4")
Do
If Format(Zelle2.Offset(1, 0).Value, "YYYYMM")  Format(Zelle1.Value, "YYYYMM") Then
ActiveSheet.PageSetup.LeftHeader = Format(Zelle1.Value, "YYYY-MM")
Range(Zelle1, Zelle2).EntireRow.PrintOut
Set Zelle1 = Zelle2.Offset(1, 0)
If Zelle1.Value = "" Then Exit Do
End If
Set Zelle2 = Zelle2.Offset(1, 0)
Loop
End Sub
Gruß Daniel
Anzeige
AW: nach Seitenumbruch neue kopfzeile mit Code generieren
15.11.2019 14:52:47
Manuel
Hallo Daniel,
danke schonmal dafür!
kann ich dann per Makro auch eine Überschrift (von mir aus 1 Zeile von A-J) mit dem jeweiligen Monatnamen hinzufügen lassen?
die Monate einzeln drucken hätte ich schon, aber wenn dann noch der Monat angezeigt wird, um den es sich handelt wär es zur Übersichtlichkeit genial!
oder kann man das alternativ auch in einzelne Dokumente/Arbeitsblätter umwandeln lassen wo dann schon eine Überschrift drin ist und das Makro quasi das ganze in den verschiedenen Arbeitsblättern erstellt bzw. aktualisiert?
das wäre ein Kompromiss...
grüße
Manuel
Anzeige
AW: nach Seitenumbruch neue kopfzeile mit Code generieren
19.11.2019 17:19:16
Daniel
Hi
naja, der Monatsname sollte hier ja eigentlich bei jedem Ausdruck in die Kopfzeile geschrieben werden.
wenn du nicht auf Papier sondern in eine Datei (PDF) drucken willst, wäre die Idee, Zeilen für jeden Monat in ein eigenes Tabellenblatt zu schreiben, nicht die verkehrteste, weil du dann einen Gesamtdruck erstellen kannst.
du könntest dir also die erforderlichen Monatsblätter mit der jeweiligen Überschriftenzeile erstellen und dann per Code die Inhalte aus der masterliste verteilen.
der Code dazu ist fast der gleiche:
Sub Druck()
Dim Zelle1 As Range
Dim Zelle2 As Range
Set Zelle2 = Range("A4")
Set Zelle1 = Range("A4")
Do
If Format(Zelle2.Offset(1, 0).Value, "YYYYMM")  Format(Zelle1.Value, "YYYYMM") Then
Sheets(Format(Zelle1.Value, "YYYY-MM")).UsedRange.Offset(1, 0).ClearContents
Range(Zelle1, Zelle2).Copy
Sheets(Format(Zelle1.Value, "YYYY-MM")).Cells(2, 1).PasteSpecial xlpasteall
Set Zelle1 = Zelle2.Offset(1, 0)
If Zelle1.Value = "" Then Exit Do
End If
Set Zelle2 = Zelle2.Offset(1, 0)
Loop
End Sub
die Zielblätter musst du vorab erstellen und nach diesem Schema mit Jahr und Monat benennen: 2019-11
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige