🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

VBA Page Setup in Excel — Druckbereich, Anpassen an Seite und Ausrichtung

|

VBA Page Setup in Excel — Druckbereich, Anpassen an Seite und Ausrichtung

Kurzfassung — Worksheet.PageSetup definiert die Seite: was darauf steht (PrintArea), wie sie ausgerichtet ist (Orientation), wie sie skaliert wird (Zoom oder FitToPagesWide/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 = False setzen.

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: Zoom gegenü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 PrintCommunication schnell 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