Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Dynamisches Fixieren von Zeilen
#1
Hallo,

ich würde gerne die erste Zeile meines Arbeitsblattes fixieren.
Wenn ich im Arbeitsblatt weiter runter scrolle, soll diese Fixierung bis zu einer bestimmten Zeile gelten.

Ab Zeile 87 soll nicht mehr die erste, sondern eben Zeile 87 fixiert werden.

Ist das irgendwie möglich?

Viele Grüße
Antwortento top
#2
Hi,

nein, das ist automatisch nicht möglich - zumindest nicht mit Bordmitteln. Du musst die erste Fixierung aufheben und ab Zeile 87 neu fixieren.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antwortento top
#3
Hi Günther,

vielen Dank schon mal für deine Rückmeldung.

Wäre das mit VBA möglich?
Antwortento top
#4
Hi,

da müsstest du auf die VBA-Spezies warten - hierbei kann ich nicht helfen.

Edit: Ich könnte mir vorstellen, dass es mit einem Makro klappt. Zum Testen habe ich eines aufgezeichnet (Zeile 1 war fixiert, wurde aufgehoben und Zeile 20 wieder fixiert).

Code:
Option Explicit

Sub ZeilenFixieren()
'
' ZeilenFixieren Makro
'

'
    Rows("20:20").Select
    ActiveWindow.FreezePanes = False
    ActiveWindow.FreezePanes = True
End Sub
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antwortento top
#5
Hi,

danke!
Aber damit fixiere ich alle Zeilen von 1 bis 20. 
Die Idee war ja, Zeile 1 zu fixieren. Wenn ich runter scrolle bleibt die erste Zeile immer oben.

Sobald ich bei Zeile 87 ankomme (mit "ankommen" meine ich, dass Zeile 87 im Fenster direkt unter der Zeile 1 erscheint), soll die Fixierung für Zeile 1 aufgehoben und stattdessen Zeile 87 fixiert werden.
Wichtig wäre, nur die Zeile 87 zu fixieren, da andernfalls (Fixierung der Zeilen 1 - 87) immer das gesamte Fenster fixiert bleiben wird (da selbst bei geringem Zoom-Faktor nur ca. 50 Zeilen auf einmal im Fenster zu sehen sind).
Antwortento top
#6
Hallo,

ich habe den Code von hier entsprechend geändert:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Static lngZeile As Long
  Dim lngT As Long
 
  lngT = Application.RoundDown(Target.Cells(1).Row / 86, 0) * 86 + 1
  If lngT <> lngZeile Then
    lngZeile = lngT
    ActiveWindow.FreezePanes = False
    Application.Goto Rows(lngT), True
    Rows(lngT + 1).Select
    ActiveWindow.FreezePanes = True
    Target.Select
  End If
End Sub
Gruß Uwe
Antwortento top
#7
Hallo,

das war ja nur als Hinweis und Beispiel gedacht. Ich schrieb bereits, dass hier die VBA-Spezies ranmüssen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Benutzer sagt Danke an WillWissen für diesen Beitrag:
  • ExcelMania
Antwortento top
#8
Hi Uwe,

cool, das geht auf jeden Fall schon in die richtige Richtung!
Wenn ich den anderen Thread richtig verstehe, funktioniert das allerdings nur, wenn man auch in die entsprechenden Zellen klickt bzw. mit den Pfeiltasten "runter scrollt".

Gibt es irgendeine Möglichkeit, dies auch einfach für das Scrollen mit der Maus zuzulassen (mit dem Mausrad oder Nutzung des Navigationsbalken auf der rechten Seite), ohne dass man in die einzelnen Zellen klicken muss?

Mit deinem aktuellen Code funktioniert es durch "runter scrollen" mit den Pfeiltasten. Wenn ich aber wieder hoch scrollen möchte, und höher als Zeile 87 gehe, wird automatisch Zeile 1 - 24 fixiert (anstatt wieder nur die Zeile 1).

Hast du eine Idee, wie man das umgehen könnte?

Vielen Dank schon mal für deine Hilfe und viele Grüße,
David
Antwortento top
#9
Hi,

das dürfte richtig „an's Eingemachte” gehen, wie man so schön sagt, denn mit den VBA-„Bordmitteln” geht das nicht. Ein Beispiel zeigt dieser Link, wobei ich ehrlich zugeben muss, dass das meinen Horizont übersteigt.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
[-] Folgende(r) 1 Benutzer sagt Danke an LuckyJoe für diesen Beitrag:
  • ExcelMania
Antwortento top
#10
Hallo David,

ich halte mich (auch) nur an die Bordmittel (Select-Event). Blush
Teste mal das:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static lngZeile As Long
Dim lngT As Long

On Error Resume Next
lngT = ActiveWindow.VisibleRange.Row
If lngT > 86 And lngZeile <> 87 Then
lngZeile = 87
Application.EnableEvents = False
ActiveWindow.FreezePanes = False
Application.Goto Cells(87, 1), True
ActiveCell.Offset(1).Select
ActiveWindow.FreezePanes = True
Target.Select
Application.EnableEvents = True
ElseIf Target.Row < 87 And lngZeile <> 1 Then
lngZeile = 1
Application.EnableEvents = False
ActiveWindow.FreezePanes = False
Application.Goto Cells(1, 1), True
ActiveCell.Offset(1).Select
ActiveWindow.FreezePanes = True
Application.Intersect(Rows(1), Target.EntireColumn).Select
Application.EnableEvents = True
End If
End Sub
Gruß Uwe
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste