Kurzfassung —
Worksheet.PageSetupdefiniert die Seite: was darauf steht (PrintArea), wie sie ausgerichtet ist (Orientation), wie sie skaliert wird (ZoomoderFitToPagesWide/FitToPagesTall), ihre Ränder, die Wiederholungszeilen sowie Kopf- und Fußzeile. Sowohl PrintOut als auch Save as PDF rendern genau diese Seiten, deshalb werden Layoutprobleme hier behoben. Die Regel, über die alle stolpern: Das Anpassen an die Seite greift erst, wenn Sie.Zoom = Falsesetzen.
Sub SetUpReportPage()
With Worksheets("Report").PageSetup
.PrintArea = "$A$1:$H$60"
.Orientation = xlLandscape
.Zoom = False ' Pflicht, sonst werden die beiden Zeilen darunter ignoriert
.FitToPagesWide = 1
.FitToPagesTall = False ' so viele Seiten hoch, wie die Daten brauchen
.PrintTitleRows = "$1:$2"
End With
End Sub
Dies ist das Fundament eines dreiteiligen Themenblocks darüber, wie Ergebnisse aus Excel herauskommen.
PageSetup, um das es hier geht, legt fest, was eine Seite ist. PrintOut schickt
diese Seiten an einen Drucker, und ExportAsFixedFormat schickt dieselben Seiten
in ein PDF. Die Ausgabebefehle sind jeweils eine Zeile; die eigentliche Arbeit steckt in der Seite. Wenn ein
Ausdruck oder ein PDF falsch aussieht, liegt die Lösung fast immer hier, nicht in dem Befehl, der es erzeugt
hat.
Was Sie lernen
- Warum die Seitendefinition sowohl Papier als auch PDF steuert
- Den Druckbereich setzen und löschen, auch aus einem
Range - Ausrichtung, Papierformat und Zentrierung
- Skalierung:
Zoomgegenüber Anpassen an Seiten, und die Regel, die beides verknüpft - Wiederholungszeilen sowie Kopf- und Fußzeilen mit Seitenzahlen
- Ränder in Zoll oder Zentimetern
- Seiteneinrichtung mit
PrintCommunicationschnell machen
Das mentale Modell: Die Seite ist das Produkt
Wenn Excel druckt oder exportiert, druckt es keine Tabelle — es zerschneidet das Blatt in Seiten und gibt
diese aus. PageSetup enthält jede Regel für diesen Schnitt: den einzuschließenden Bereich, das Papier, die
Ausrichtung, die Skalierung, die Ränder und das, was sich auf jeder Seite wiederholt.
PrintOut und ExportAsFixedFormat sind nur zwei Ziele für
das Ergebnis. Betrachten Sie die Seiteneinrichtung also als das Produkt und den Ausgabebefehl als die
Auslieferung. Ein Berichtsmakro, das die Seite ausdrücklich einrichtet, liefert auf jedem Rechner dasselbe
Ergebnis; eines, das sich auf das verlässt, was beim letzten Mal übrig geblieben ist, nicht.
Der Druckbereich
PrintArea ist eine Zeichenfolge mit einer Adresse im A1-Format, kein Range. Um ihn aus einem Bereich
zu setzen, übergeben Sie dessen Address:
Dim ws As Worksheet
Set ws = Worksheets("Report")
ws.PageSetup.PrintArea = ws.Range("A1").CurrentRegion.Address ' der Datenblock
ws.PageSetup.PrintArea = "" ' loeschen: alles drucken
Ihn aus CurrentRegion oder aus der letzten Zeile abzuleiten sorgt dafür, dass ein Bericht genau seine Daten druckt, egal wie viele Zeilen er diesen Monat hat. Ihn mit einer leeren Zeichenfolge zu löschen ist genauso wichtig: Ein Druckbereich, der von einem alten Lauf übrig geblieben ist, kürzt den nächsten Bericht stillschweigend ab.
Ausrichtung, Papierformat und Zentrierung
With ws.PageSetup
.Orientation = xlLandscape ' oder xlPortrait
.PaperSize = xlPaperA4 ' oder xlPaperLetter
.CenterHorizontally = True
End With
PaperSize hängt davon ab, was der Druckertreiber unterstützt; ein Format, das der Drucker nicht kennt, löst
einen Fehler aus. Bei einer Arbeitsmappe, die sowohl nach Europa als auch in die USA geht, setzen Sie es
bewusst, statt es vorauszusetzen.
Skalierung: Zoom gegenüber Anpassen an Seiten
Es gibt zwei Arten zu skalieren, und sie schließen sich gegenseitig aus. Zoom ist ein Prozentwert von 10
bis 400. Mit FitToPagesWide und FitToPagesTall wählt Excel die Skalierung so, dass eine bestimmte
Seitenzahl erreicht wird. Excel verwendet die Anpassungseinstellungen nur, wenn Zoom den Wert False
hat — solange Zoom eine Zahl enthält, werden sie stillschweigend ignoriert. Deshalb tun so viele Makros
nach dem Muster „auf eine Seite anpassen“ schlicht nichts:
With ws.PageSetup
.Zoom = False
.FitToPagesWide = 1 ' alle Spalten auf einer Seite nebeneinander
.FitToPagesTall = False ' Zeilen duerfen auf beliebig viele Seiten laufen
End With
FitToPagesWide = 1 zusammen mit FitToPagesTall = False ist die Einstellung, die die meisten Berichte
brauchen: Spalten nie trennen, Zeilen fließen lassen. Beide auf 1 zu setzen presst alles auf eine einzige
Seite — für eine Übersicht in Ordnung, für eine lange Liste unlesbar.
Wiederholungszeilen, Kopf- und Fußzeilen
PrintTitleRows wiederholt Überschriftenzeilen oben auf jeder Seite; es erwartet eine Zeilenadresse als
Zeichenfolge. Kopf- und Fußzeilen nehmen Text mit Codes: &P ist die Seitenzahl, &N die Seitenanzahl, &D
das Datum, &A der Blattname.
With ws.PageSetup
.PrintTitleRows = "$1:$2"
.CenterFooter = "Seite &P von &N"
.RightHeader = "&A - gedruckt am &D"
End With
Weil & einen Code einleitet, muss ein wörtliches kaufmännisches Und im Kopfzeilentext verdoppelt werden:
"R&&D Report" wird als R&D Report gedruckt.
Ränder in Zoll oder Zentimetern
Ränder werden in Punkt gemessen, nicht in Zoll. Rechnen Sie mit Application.InchesToPoints oder
Application.CentimetersToPoints um:
With ws.PageSetup
.LeftMargin = Application.CentimetersToPoints(1.5)
.RightMargin = Application.CentimetersToPoints(1.5)
.TopMargin = Application.InchesToPoints(0.75)
End With
.LeftMargin = 1 setzt einen Rand von einem Punkt — etwa einem Drittelmillimeter —, und das ist ein häufiger
Grund, warum ein Ausdruck plötzlich bis an den Papierrand läuft.
Seiteneinrichtung mit PrintCommunication schnell machen
Jede Zuweisung an PageSetup spricht mit dem Druckertreiber, sodass ein Block aus zehn Einstellungen
Sekunden dauern kann — in einer Schleife über viele Blätter noch länger. Schalten Sie dieses Gespräch ab,
während Sie die Werte setzen, und danach wieder ein:
Application.PrintCommunication = False
With ws.PageSetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
Application.PrintCommunication = True ' uebernimmt die gesammelten Einstellungen
Schalten Sie es immer wieder ein — die Einstellungen werden erst übernommen, wenn es auf True zurückkehrt.
Derselbe Gedanke gilt für ScreenUpdating: Hindern Sie Excel an Arbeit, die Sie
nicht brauchen, solange das Makro läuft.
Wie ExcelMaster hilft
In der Seiteneinrichtung scheitern Berichtsmakros leise: ein Zoom, das das Anpassen an die Seite
stillschweigend abschaltet, ein Rand in Punkt statt in Zentimetern, ein Druckbereich vom letzten Monat, eine
Fußzeile mit einem kaufmännischen Und, das verschwindet. Nichts davon löst einen Fehler aus — der Bericht
kommt einfach falsch heraus, auf Papier oder im PDF.
ExcelMaster lässt Sie die Seite
beschreiben — „A4 quer, eine Seite breit, die ersten beiden Zeilen wiederholen, Seitenzahlen in der
Fußzeile“ — und schreibt den vollständigen PageSetup-Block, samt Zoom-Regel, Einheitenumrechnung und
Schnellmodus, und zeigt anschließend eine Vorschau der Seiten, damit Sie das Layout sehen, bevor irgendetwas
gedruckt oder exportiert wird.
Häufig gestellte Fragen
Wie lege ich den Druckbereich in VBA fest?
Weisen Sie PageSetup.PrintArea eine Adresse als Zeichenfolge zu, etwa Worksheets("Report").PageSetup.PrintArea = "$A$1:$H$60". Um einen Bereich zu verwenden, übergeben Sie dessen Address:
.PrintArea = Range("A1").CurrentRegion.Address. Setzen Sie ihn auf "", um den Druckbereich zu löschen und
das ganze Blatt zu drucken.
Warum funktioniert FitToPagesWide nicht?
Weil Zoom noch einen Prozentwert enthält. Excel ignoriert FitToPagesWide und FitToPagesTall, solange
nicht PageSetup.Zoom = False gilt. Setzen Sie zuerst Zoom auf False, dann die Anpassungseinstellungen,
typischerweise FitToPagesWide = 1 und FitToPagesTall = False.
Wie stelle ich in VBA das Querformat ein?
Mit Worksheets("Report").PageSetup.Orientation = xlLandscape. Mit xlPortrait wechseln Sie zurück ins
Hochformat. Die Einstellung gilt für den Druck ebenso wie für den PDF-Export, weil beide die
Seiteneinrichtung des Blatts rendern.
Wie wiederhole ich Überschriftenzeilen auf jeder gedruckten Seite?
Setzen Sie PageSetup.PrintTitleRows auf eine Zeilenadresse als Zeichenfolge, zum Beispiel "$1:$2", um die
Zeilen 1 und 2 zu wiederholen. Um Spalten am linken Rand jeder Seite zu wiederholen, verwenden Sie
PrintTitleColumns mit einer Spaltenadresse wie "$A:$A".
Warum ist mein PageSetup-Makro so langsam?
Jede PageSetup-Eigenschaft spricht mit dem Druckertreiber. Schließen Sie die Einstellungen in
Application.PrintCommunication = False und Application.PrintCommunication = True ein; Excel übernimmt sie
dann in einem Durchgang. Denken Sie daran, es wieder auf True zu setzen, sonst werden die Einstellungen
nicht übernommen.
Getestet in
Getestet in: Excel 365 (Windows 11), VBA 7.1 — zuletzt geprüft am 29.09.2026.
Verwandte Anleitungen: VBA Save as PDF · VBA PrintOut · VBA CurrentRegion · VBA Last Row · VBA Used Range · VBA ScreenUpdating · VBA Workbook BeforePrint
