Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

FreezePanes-Eigenschaft kann nicht festgelegt werd

Forumthread: FreezePanes-Eigenschaft kann nicht festgelegt werd

FreezePanes-Eigenschaft kann nicht festgelegt werd
13.06.2017 12:01:18
Peter
Guten Tag
Mit nachfolgendem Code habe ich in der Vergangenheit in einem Worksheet die Fensterfixierung vorgenommen. Das ist insbesondere nötig, da ich zwischendurch ein zweites Fenster aufmache.
Nun funktioniert der Code nicht mehr, und zwar an folgender Stelle:
'Eventuell bestehende Fixierung TabSchutzDeaktivieren
wndFenster.FreezePanes = Falsej
Da kommt der Laufzeitfehler "Die FreezePanes-Eigenschaft des Windows-Objektes kann nicht festgelegt werden"
Das Worksheet ist nicht geschützt.
Hat jemand eine Idee, weshalb das nicht mehr geht?
Gruss, Peter
Sub Bereiche_fixieren()
''Fenster fixieren anhand von Drucktitel
''''mit Ergänzungen durch PS
''mit Ergänzungen durch Josef Ehrensberger am: 19.07.2009
Dim wndFenster As Window, actWin As Window
Dim shBlatt As Worksheet, actWsh As Worksheet
Dim rngOldSel As Range
Dim strZeilen As String, strSpalten As String
Dim lngZeile As Long, lngSpalte As Long
'Aktuell aktives Fenster speichern
Set actWin = ActiveWindow
For Each wndFenster In ActiveWorkbook.Windows
wndFenster.Activate
'Aktives Fenster minimieren (damit Flackern unterbunden werden kann -
'kann nicht mit ScreenUdating = False gemacht werden, da sonst
'Fensterfixierung nicht funktioniert)
Application.WindowState = xlMinimized
' Aktuell aktives Blatt speichern
Set actWsh = ActiveSheet
'Alle Arbeitsblätter in der Mappe durchlaufen
For Each shBlatt In ActiveWorkbook.Worksheets
'Aktivieren
shBlatt.Activate
'Markierten Bereich merken
Set rngOldSel = Selection
'Drucktitel (Zeilen und Spalten auslesen)
strZeilen = ActiveSheet.PageSetup.PrintTitleRows
strSpalten = ActiveSheet.PageSetup.PrintTitleColumns
'Ohne Drucktitel nichts ändern.
If strZeilen  "" Or strSpalten  "" Then
'Zeile bestimmen, oberhalb derer fixiert werden soll
If strZeilen = "" Then
lngZeile = 1
Else
lngZeile = Range(strZeilen).Rows(Range(strZeilen).Rows.Count).Row + 1
End If
'Spalte bestimmen, von der links fixiert werden soll
If strSpalten = "" Then
lngSpalte = 1
Else
lngSpalte = Range(strSpalten).Columns(Range(strSpalten).Columns.Count).Column + 1
End If
'Eventuell bestehende Fixierung TabSchutzDeaktivieren
wndFenster.FreezePanes = False
'Zelle wählen, fixieren
wndFenster.Activate
Cells(lngZeile, lngSpalte).Select
wndFenster.FreezePanes = True
'Alte Auswahl wieder herstellen
rngOldSel.Activate
End If
Next shBlatt
' Wieder zurück zum zuvor aktiven Blatt
actWsh.Activate
Next wndFenster
'wieder zurück zum zuvor aktiven Fenster
actWin.Activate
' Fenster wieder in der ursprünglichen Grösse anzeigen
Application.WindowState = xlNormal
Set rngOldSel = Nothing
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: FreezePanes-Eigenschaft kann nicht festgelegt werd
13.06.2017 16:13:46
Luschi
Hallo Peter,

entweder:
If wndFenster.FreezePanes Then
wndFenster.FreezePanes = False
End If
oder:
On Error Resume Next
wndFenster.FreezePanes = False
On Error Goto 0
Gruß von Luschi
aus klein-Paris
AW: FreezePanes-Eigenschaft kann nicht festgelegt werd
14.06.2017 13:11:48
Peter
Hallo Luschi
Vielen Dank. Allerdings werden die Drucktitel (Spalten und Zeilen) nicht eingefroren. Ich habe eine Beispielmappe hochgeladen. Die Drucktitel sollten eingefroren werden, wenn vorhanden bei allen offenen Fenstern der Tabelle.
Was ist wohl noch falsch? Unter einer früheren Excel-Version hat das mal geklappt.
Gruss, Peter
https://www.herber.de/bbs/user/114269.xlsm
Anzeige
AW: FreezePanes-Eigenschaft kann nicht festgelegt werd
16.06.2017 15:46:46
mmat
Hallo,
warum das nicht (mehr) funktioniert, weiß ich auch nicht. Bei mir geht das, ich hab das mal mit 'ner leeren Mappe getestet. Auch "wndFenster.FreezePanes = False" (ohne if) ist eigentlich korrekt.
Also ist das Problem wohl eher bei Änderungen in deiner Arbeitsmappe zu suchen. Meine üblichen Verdächtigen wären AktivX-Steuerelemente, Grafiken, Pivottabellen etc.
vg, MM
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

FreezePanes in Excel VBA: Probleme und Lösungen


Schritt-für-Schritt-Anleitung

Um die FreezePanes-Eigenschaft in Excel VBA erfolgreich zu setzen, kannst Du den folgenden Schritt-für-Schritt-Anleitung folgen. Dies ist besonders nützlich, wenn Du mehrere Fenster geöffnet hast und die Sichtbarkeit von bestimmten Zeilen oder Spalten beibehalten möchtest.

  1. Definiere die Variablen:

    Dim wndFenster As Window, actWin As Window
    Set actWin = ActiveWindow
  2. Durchlaufe alle Fenster:

    For Each wndFenster In ActiveWorkbook.Windows
       wndFenster.Activate
       Application.WindowState = xlMinimized
  3. Aktiviere das gewünschte Arbeitsblatt:

    Set actWsh = ActiveSheet
  4. Bestimme die Zeilen und Spalten für die Drucktitel:

    strZeilen = ActiveSheet.PageSetup.PrintTitleRows
    strSpalten = ActiveSheet.PageSetup.PrintTitleColumns
  5. Setze die FreezePanes-Eigenschaft:

    If strZeilen <> "" Or strSpalten <> "" Then
       ' Bestimme Zeilen- und Spaltennummer
       ' ...
       wndFenster.FreezePanes = False
       Cells(lngZeile, lngSpalte).Select
       wndFenster.FreezePanes = True
    End If

Dies sorgt dafür, dass die gewählten Zeilen und Spalten fixiert werden, was besonders bei großen Datenmengen hilfreich ist.


Häufige Fehler und Lösungen

Ein häufiger Fehler, den Du möglicherweise bekommst, ist:

  • "unable to set the freezepanes property of the window class": Dies geschieht oft, wenn eine andere Fenster- oder Arbeitsblatteinstellung dies verhindert. Stelle sicher, dass kein Arbeitsblatt geschützt ist und dass die gewünschten Zeilen oder Spalten tatsächlich existieren.

Lösungen:

  • Überprüfe, ob das Arbeitsblatt geschützt ist.
  • Versuche, die FreezePanes-Eigenschaft mit If wndFenster.FreezePanes Then wndFenster.FreezePanes = False zu setzen, bevor Du die neue Einstellung vornimmst.

Alternative Methoden

Wenn Du die FreezePanes-Eigenschaft ohne die Auswahl eines Fensters setzen möchtest, kannst Du die activewindow.freezepanes-Eigenschaft verwenden. Hier ist ein Beispiel, wie Du dies ohne die Auswahl eines Fensters tun kannst:

Sub FreezeWithoutSelect()
    Dim rng As Range
    Set rng = ActiveSheet.Range("A2") ' Beispiel: Zelle A2 wählen
    rng.Select
    ActiveWindow.FreezePanes = True
End Sub

Diese Methode ist nützlich, wenn Du die Sichtbarkeit von Daten verbessern möchtest, ohne die Benutzeroberfläche ständig zu ändern.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die FreezePanes-Eigenschaft in verschiedenen Szenarien anwenden kannst:

  1. Alle Fenster fixieren:

    For Each wndFenster In ActiveWorkbook.Windows
       wndFenster.FreezePanes = False
       ' Setze die gewünschten Zeilen und Spalten
       Cells(1, 1).Select ' Beispiel
       wndFenster.FreezePanes = True
    Next wndFenster
  2. Fixieren ohne die Auswahl:

    ActiveWindow.FreezePanes = False ' Vorherige Fixierung aufheben
    ActiveSheet.Range("A2").Select
    ActiveWindow.FreezePanes = True

Diese Beispiele zeigen, wie Du die FreezePanes-Eigenschaft in VBA effektiv nutzen kannst.


Tipps für Profis

  • Verwende On Error Resume Next: Dies kann eine nützliche Methode sein, um das Programm nicht zum Absturz zu bringen, wenn Fehler auftreten. Zum Beispiel:

    On Error Resume Next
    wndFenster.FreezePanes = False
    On Error GoTo 0
  • Vermeide Flackern: Minimiere das Fenster vor der Änderung der FreezePanes-Eigenschaft, um visuelles Flackern zu vermeiden.

  • Testen in einer leeren Mappe: Wenn Du Probleme hast, teste Deinen Code zunächst in einer leeren Arbeitsmappe, um herauszufinden, ob das Problem an bestimmten Inhalten in Deiner Datei liegt, wie z.B. Pivot-Tabellen oder Grafiken.


FAQ: Häufige Fragen

1. Warum funktioniert die FreezePanes-Eigenschaft nicht mehr? Das kann verschiedene Gründe haben, z.B. wenn das Arbeitsblatt geschützt ist oder wenn die FreezePanes-Eigenschaft bereits aktiv ist. Überprüfe auch, ob die richtigen Zeilen und Spalten definiert sind.

2. Kann ich FreezePanes auch ohne Auswahl setzen? Ja, Du kannst die FreezePanes-Eigenschaft direkt über activewindow.freezepanes setzen, ohne eine Zelle auszuwählen.

3. Was tun, wenn ich den Fehler "unable to set the freezepanes property of the window class" bekomme? Stelle sicher, dass das Arbeitsblatt nicht geschützt ist und dass Du die FreezePanes-Eigenschaft in einem aktiven Fenster anwendest. Überprüfe auch, ob alle erforderlichen Zeilen oder Spalten korrekt definiert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige