Urlaub 2020. Morgens 7:00 Uhr. Handtuch auf die Couch legen. Nicht, dass mein Platz später belegt ist.

Gegeben sei eine Tabelle die per Programmierung erzeugt wird. Sie hat Zwischenüberschriften.

Der Ausdruck ist etwas unglücklich, da die Zwischenüberschriften irgendwo auf der Seite stehen. Sie sollen immer am oberen Papierrand stehen.

Kein Problem: die Befehle für Seitenumbruch einfügen (die Zeilen werden natürlich „gesucht“ – die Zeilennummer berechnet), ist schnell gefunden:

ThisWorkbook.Worksheets(1).HPageBreaks.Add Before:=ThisWorkbook.Worksheets(1).Cells(5, 1)
ThisWorkbook.Worksheets(1).HPageBreaks.Add Before:=ThisWorkbook.Worksheets(1).Cells(30, 1)
ThisWorkbook.Worksheets(1).HPageBreaks.Add Before:=ThisWorkbook.Worksheets(1).Cells(51, 1)

Klappt. Die ersten vier Zeilen werden wiederholt.

Allerdings sollte die Tabelle auf eine Seite angepasst werden:

With ThisWorkbook.Worksheets(1).PageSetup
         .Zoom = False
         .FitToPagesWide = 1
 End With

Und was jetzt passiert entzieht sich meiner Kenntnis:

Ich schaffe es nicht die Seitenbreite = 1 einzustellen UND Seitenumbrüche einzufügen. Alle Versuche die Reihenfolge der Zeilen zu ändern, Application.PrintCommunication ein- oder auszuschalten, die Eigenschaft PageBreak auf xlPageBreakManual festzulegen … Alles scheitert. Also habe ich nachgesehen, wie „breit“ eine Seite ist. Hier: 60%. Und mit dem Befehl

ThisWorkbook.Worksheets(1).PageSetup.Zoom = 60

klappt es auch, wie man sehen kann:

Hier der ganze Code:

Sub SeiteEinrichten()
ThisWorkbook.Worksheets(1).ResetAllPageBreaks
ThisWorkbook.Worksheets(1).PageSetup.PrintArea = ""

Application.PrintCommunication = False
With ActiveSheet.PageSetup
    .PrintTitleRows = "$1:$4"
    .PrintTitleColumns = ""
End With

With ThisWorkbook.Worksheets(1).PageSetup
    .Zoom = False
    .FitToPagesWide = 1
End With

ThisWorkbook.Worksheets(1).HPageBreaks.Add Before:=ThisWorkbook.Worksheets(1).Cells(5, 1)
ThisWorkbook.Worksheets(1).HPageBreaks.Add Before:=ThisWorkbook.Worksheets(1).Cells(30, 1)
ThisWorkbook.Worksheets(1).HPageBreaks.Add Before:=ThisWorkbook.Worksheets(1).Cells(51, 1)


ThisWorkbook.Worksheets(1).PageSetup.Zoom = 60
ThisWorkbook.Worksheets(1).PageSetup.CenterHorizontally = False
Application.PrintCommunication = True

ThisWorkbook.Worksheets(1).PageSetup.LeftFooter = "Lebensmittel"
' -- Firmenname in der Fußzeile
End Sub