Kurzfassung —
ActiveWindow.FreezePanes = Truesperrt alles oberhalb und links der aktiven Zelle, sodass es stehen bleibt, während der Rest scrollt. Zwei Dinge überraschen: Es fixiert relativ zu der Zelle, die gerade ausgewählt ist, Sie müssen die aktive Zelle also zuerst positionieren (A2auswählen, um Zeile 1 zu fixieren,B2, um Zeile 1 und Spalte A zu fixieren); und es lebt am Fenster, nicht am Blatt, weshalb esActiveWindow.FreezePanesheißt und ein zweites Fenster auf derselben Datei seine eigene Fixierung hat. Schalten Sie es mit= Falseaus und heben Sie die Fixierung auf, bevor Sie an einer neuen Stelle neu fixieren.
' FreezePanes fixiert alles oberhalb und links der AKTIVEN Zelle.
Application.Goto Range("A2"), Scroll:=True ' oberste Zeile fixieren: aktive Zelle DARUNTER setzen
ActiveWindow.FreezePanes = True
' Oberste Zeile UND erste Spalte fixieren: aktive Zelle bei B2
Worksheets("Report").Activate
Range("B2").Select
ActiveWindow.FreezePanes = True
' Fixierung aufheben:
ActiveWindow.FreezePanes = False
FreezePanes ist die Code-Fassung von Ansicht > Fenster fixieren — der Einstellung, die Ihre
Kopfzeile auf dem Bildschirm hält, wenn Sie tausend Datenzeilen weit nach unten scrollen. Es ist die eine
Ansicht-Feinheit, die es sich lohnt, in jedes Bericht-Makro zu schreiben, weil sie aus einer Wand von
Zahlen etwas macht, das jemand tatsächlich lesen kann. Es ist auch eine der wenigen
VBA-Eigenschaften, bei denen Sie zu Recht die aktive Zelle und das aktive Fenster anfassen müssen, was
genau der Grund ist, warum es sich auf Weisen verhält, die Leute überraschen.
Was Sie lernen
- Das Denkmodell — die Fixierung sperrt eine Ecke der Ansicht und lebt am Fenster
- Die eine Regel, die zählt — es fixiert relativ zur aktiven Zelle, positionieren Sie sie also zuerst
- Warum es
ActiveWindow.FreezePanesheißt und jedes Neue Fenster seine eigene Fixierung hat - Es ausschalten, und warum Sie die Fixierung vor dem Neu-Fixieren aufheben müssen
FreezePanesgegenüberSplit, und ein Weg ohne Select überSplitRow- Wohin die Fixierung in einem Bericht-Makro gehört — zuletzt, auf das Blatt, das Sie gerade gebaut haben
Das Denkmodell: eine Ecke der Ansicht fixieren
Fenster zu fixieren ändert nicht die Daten, nicht das Blatt, nicht eine einzige Zelle — es ändert das
Fenster, durch das Sie schauen. Stellen Sie sich das Raster durch eine waagerechte und eine senkrechte
Linie in vier Quadranten geteilt vor. Der Quadrant oben links ist angeheftet; die anderen drei scrollen
darunter. FreezePanes zeichnet diese Linien und heftet die Ecke an. Das ist die ganze Idee, und sie
trägt zwei Folgen, die alles Übrige erklären: Die Teilung muss irgendwo positioniert werden, und sie
gehört zum Fenster, weil ein Fenster das ist, was scrollt.
Halten Sie „es ist eine Ansicht-Einstellung am Fenster" fest, und die zwei klassischen Überraschungen — die falschen Zeilen fixieren und eine Fixierung, die nicht hält — sind keine Rätsel mehr.
Die wichtigste Regel: es fixiert an der aktiven Zelle
Hier ist der Fehler hinter fast jedem „es hat die falschen Zeilen fixiert"-Bug. FreezePanes nimmt weder
eine Zeilennummer noch einen Bereich. Es fixiert alles oberhalb und links von der Zelle, die im Moment
des Setzens aktiv ist. Die aktive Zelle ist also die Steuerung, und wenn Sie sie nicht positionieren,
fixieren Sie dort, wo der Cursor gerade zufällig stand:
ActiveWindow.FreezePanes = True ' fixiert an der aktuellen Auswahl - wo immer die ist
Die Regel ist, die aktive Zelle knapp unter und rechts von dem zu platzieren, was Sie fixiert haben wollen, und dann die Eigenschaft zu setzen:
- Die oberste Zeile fixieren →
A2auswählen (alles über Zeile 2 wird fixiert). - Die erste Spalte fixieren →
B1auswählen. - Beide — oberste Zeile und erste Spalte — fixieren →
B2auswählen.
Deshalb zeigt das aufgezeichnete Makro immer ein Range(...).Select direkt vor
ActiveWindow.FreezePanes = True. Fixieren ist einer der seltenen Fälle, in denen das Auswählen einer
Zelle kein Code-Geruch ist — die Auswahl ist das Argument. Treffen Sie die aktive Zelle richtig, und die
Fixierung landet genau da, wo Sie sie wollen.
Es lebt am Fenster, nicht am Blatt
Beachten Sie das Objekt: ActiveWindow.FreezePanes, nie Worksheet.FreezePanes. Fixieren ist eine
Eigenschaft des Fensters, durch das Sie ein Blatt betrachten — und ein Blatt kann in mehr als einem
Fenster gezeigt werden. Öffnen Sie Ansicht > Neues Fenster auf derselben Arbeitsmappe, und Sie
erhalten ein zweites Fenster mit seinem eigenen Fixierungszustand; das eine kann die oberste Zeile
fixiert haben und das andere nicht. Deshalb kann eine Fixierung scheinbar „nicht halten": Sie setzen sie
auf einem Fenster und schauen auf ein anderes.
Für ein Makro ist die praktische Folge, dass das Blatt, das Sie fixieren wollen, in dem Fenster, das Sie
einstellen, aktiv sein muss — Sie können die Fenster eines Blattes, das der Benutzer nicht ansieht,
nicht zuverlässig fixieren. Das macht FreezePanes zu einer der wenigen Stellen, an denen der Griff zu
ActiveWindow und Activate richtig statt faul ist: Das Fenster ist wirklich das, was Sie konfigurieren.
Aktivieren Sie das Blatt, positionieren Sie die aktive Zelle, setzen Sie die Eigenschaft.
Ausschalten und neu fixieren
Die Fixierung aufzuheben ist eine schlichte Zuweisung:
ActiveWindow.FreezePanes = False
Die Feinheit ist das Neu-Fixieren. FreezePanes = True zu setzen, wenn die Fenster bereits fixiert
sind, tut nichts — Excel verschiebt eine bestehende Fixierung nicht auf die neue aktive Zelle. Um eine
Fixierung zu verschieben, müssen Sie sie also zuerst löschen, die aktive Zelle neu positionieren und sie
dann erneut setzen:
ActiveWindow.FreezePanes = False ' die alte Fixierung loeschen
Range("C3").Select ' neu positionieren
ActiveWindow.FreezePanes = True ' an der neuen Ecke fixieren
Lassen Sie die = False-Zeile weg, und Ihre „neue" Fixierung wird ignoriert, während die alte still
stehen bleibt. Machen Sie das Aufheben zum ersten Schritt, wann immer ein Makro eine Fixierung neu
anwendet, die es in einem früheren Lauf gesetzt haben könnte.
FreezePanes gegenüber Split, und ein Weg ohne Select
FreezePanes sperrt die Fenster fest. ActiveWindow.Split (mit SplitRow und SplitColumn) erzeugt
stattdessen ziehbare Teilungsbalken — die Fenster sind getrennt, aber der Benutzer kann ihre Größe
ändern, und sie sperren nicht. Die meisten Bericht-Makros wollen eine Fixierung, keine Teilung. Aber die
Split-Eigenschaften geben Ihnen einen sauberen Weg, ohne eine Zelle auszuwählen zu fixieren, was manche
der Lesbarkeit wegen bevorzugen:
ActiveWindow.SplitRow = 1 ' Teilung unter Zeile 1
ActiveWindow.SplitColumn = 1 ' Teilung nach Spalte A
ActiveWindow.FreezePanes = True ' die Teilung in eine Fixierung verwandeln - kein Select noetig
SplitRow/SplitColumn zu setzen und dann FreezePanes = True fixiert an der Teilungsposition, sodass
Sie die aktive Zelle nie anfassen. Beide Stile sind in Ordnung; nehmen Sie den, der sich für Sie klarer
liest. Die Variante ohne Select vermeidet, den Benutzer nach dem Makro-Lauf auf einer überraschenden Zelle
stehen zu lassen.
Wohin die Fixierung in einem Bericht-Makro gehört
Die Fixierung ist ein letzter Schliff, also kommt sie zuletzt — nachdem Sie die Daten geschrieben, die
Zahlenformate angewendet und AutoFit ausgeführt haben. Früh zu fixieren und dann
Zeilen einzufügen oder zu löschen kann verschieben, wo die Fixierung landet. Das verlässliche Muster ist:
das Blatt bauen, es dimensionieren, das gebaute Blatt aktivieren, die aktive Zelle positionieren (oder die
Teilung setzen), dann ActiveWindow.FreezePanes = True. Vertrauen Sie nicht dem fest verdrahteten
Range("A2").Select, das ein Rekorder auf einem anderen Blatt-Layout geschrieben hat — entscheiden Sie die
Fixierungs-Ecke aus dem Bericht, den Sie tatsächlich erzeugt haben, und platzieren Sie die aktive Zelle
bewusst dort.
Wie ExcelMaster hilft
Fenster fixieren ist die Einstellung, die einen erzeugten Bericht auf einen Blick nutzbar macht, und auch die, die still Zeile 1 bis Zeile 40 fixiert, weil die aktive Zelle irgendwo Unerwartetes war, oder scheinbar nicht funktioniert, weil sie auf dem falschen Fenster gesetzt wurde, oder sich weigert, sich zu bewegen, weil die alte Fixierung nie gelöscht wurde.
ExcelMaster lässt Sie sagen, was
auf dem Bildschirm bleiben soll — „fixiere die Kopfzeile", „sperre die ersten zwei Spalten und die oberste
Zeile" — und schreibt die Fixierung als letzten Schritt der Routine: Es aktiviert das richtige Blatt,
positioniert die aktive Zelle (oder setzt SplitRow/SplitColumn für eine Fixierung ohne Select), sodass
die Teilung genau dort landet, wo Sie es meinten, und löscht jede alte Fixierung, bevor es eine neue
anwendet. Sie behalten die Arbeitsmappe und den Code.
Häufig gestellte Fragen
Warum fixiert VBA die falschen Zeilen?
Weil FreezePanes relativ zur aktiven Zelle fixiert, nicht zu einer Zeilennummer, und die aktive Zelle
nicht dort war, wo Sie dachten. Es sperrt alles oberhalb und links der Auswahl. Positionieren Sie die
aktive Zelle zuerst — A2 auswählen, um die oberste Zeile zu fixieren, B2, um die oberste Zeile und die
erste Spalte zu fixieren — und setzen Sie dann ActiveWindow.FreezePanes = True.
Wie fixiere ich die oberste Zeile in VBA?
Machen Sie die aktive Zelle zu A2 (eine Zeile unter der Kopfzeile) und fixieren Sie dann:
Range("A2").Select, gefolgt von ActiveWindow.FreezePanes = True. Oder überspringen Sie die Auswahl ganz
mit ActiveWindow.SplitRow = 1, dann ActiveWindow.FreezePanes = True. Das Blatt muss in dem Fenster, das
Sie einstellen, aktiv sein.
Wie hebe ich die Fixierung in VBA auf?
Setzen Sie die Eigenschaft auf False: ActiveWindow.FreezePanes = False. Beachten Sie, dass Sie eine
Fixierung nur verschieben können, indem Sie sie zuerst aufheben — FreezePanes = True zu setzen, während
die Fenster bereits fixiert sind, tut nichts, also löschen Sie die alte Fixierung, positionieren die aktive
Zelle neu und setzen sie dann erneut.
Warum funktioniert ActiveWindow.FreezePanes nicht?
Meist eine von drei Ursachen. Das Blatt, das Sie fixieren wollen, ist im aktuellen Fenster nicht aktiv —
aktivieren Sie es zuerst. Oder die Fenster sind bereits fixiert, sodass ein erneutes True ignoriert wird
— setzen Sie False, positionieren Sie neu, dann True. Oder Sie schauen auf ein anderes Fenster als das,
das Sie gesetzt haben: Die Fixierung ist eine Eigenschaft je Fenster, und Neues Fenster erzeugt ein
zweites Fenster mit eigenem Zustand.
Liegt FreezePanes am Arbeitsblatt oder am Fenster?
Am Fenster. Es ist ActiveWindow.FreezePanes, keine Arbeitsblatt-Eigenschaft, weil das Fixieren
konfiguriert, wie ein Fenster über ein Blatt scrollt. Dasselbe Blatt, in zwei Fenstern gezeigt (über
Ansicht > Neues Fenster), kann unterschiedliche Fixierungszustände haben. Auch deshalb muss das Blatt
in dem Fenster, das Sie konfigurieren, aktiv sein.
Getestet in
Getestet in: Excel 365 (Windows 11), VBA 7.1 — zuletzt geprüft am 10.09.2026.
Weiterführende Anleitungen: VBA AutoFit · VBA Zeilenumbruch · VBA Worksheets · VBA Spaltenbreite · VBA Range
