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

VBA Freeze Panes in Excel — Kopfzeilen fixieren, ohne die falschen zu erwischen

|

VBA Freeze Panes in Excel — Kopfzeilen fixieren, ohne die falschen zu erwischen

KurzfassungActiveWindow.FreezePanes = True sperrt 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 (A2 auswählen, um Zeile 1 zu fixieren, B2, um Zeile 1 und Spalte A zu fixieren); und es lebt am Fenster, nicht am Blatt, weshalb es ActiveWindow.FreezePanes heißt und ein zweites Fenster auf derselben Datei seine eigene Fixierung hat. Schalten Sie es mit = False aus 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.FreezePanes heißt und jedes Neue Fenster seine eigene Fixierung hat
  • Es ausschalten, und warum Sie die Fixierung vor dem Neu-Fixieren aufheben müssen
  • FreezePanes gegenüber Split, und ein Weg ohne Select über SplitRow
  • 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 → A2 auswählen (alles über Zeile 2 wird fixiert).
  • Die erste Spalte fixieren → B1 auswählen.
  • Beide — oberste Zeile und erste Spalte — fixieren → B2 auswä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