Excel 2007: Scrollen zu Position von unten

Alles Gute für’s neue Jahr!

Wie kann ich in Excel ein Blatt so scrollen, daß eine bestimmte Zeile einen bestimmten Abstand von unten (unterer Rand) hat. Mit

ActiveWindow.ScrollRow = x

kann ich nur den Abstand vom oberen Rand vorgeben. Da ich aber nicht weiß, wie groß das Excel-Fenster beim Anwender ist, welche Zoom-Stufe er verwendet und wie hoch die darüberliegenden Zeilen sind, wäre es doch schön, wenn man eine bestimmte Zeile dicht an den unteren Rand scrollen könnte.

Vielen Dank und beste Grüße
-Rob.

Hallo Rob,

Alles Gute für’s neue Jahr!

dito.

Wie kann ich in Excel ein Blatt so scrollen, daß eine
bestimmte Zeile einen bestimmten Abstand von unten (unterer
Rand) hat.

? Erläutere mir das bitte nochma mit dem Abstand.

Mit :

ActiveWindow.ScrollRow = x

kann ich nur den Abstand vom oberen Rand vorgeben.

? Ich sehe den Befehl so daß im Blatt obenlinks dann die Zelle angezeigt wird deren Zeilennummer x entspricht. Hast du im Blatt zeilen fixiert so ist das dann wohl die obere Zelle unterhalb der Fixierung *glaub, nicht getestet*

Da ich aber
nicht weiß, wie groß das Excel-Fenster beim Anwender ist,

kann man auslesen.

welche Zoom-Stufe er verwendet

kann man auslesen.

und wie hoch die darüberliegenden Zeilen sind,

kann man auslesen. Und zwar dann wenn man ermittelt hat was die oberste und die unterste Zeile ist die angezeigt wird.

wäre es doch schön, wenn man
eine bestimmte Zeile dicht an den unteren Rand scrollen
könnte.

? Was meinst du damit genau?

Ich weiß daß ich hier schonmal vor Jahren für jmdn. Code bastelte der analog zur Fixierung „unten“ immer z.B. die Gesamtsumme einer Spalte anzeigte, egal wohin da in der langen Liste gescrollt wurde.

Um zu verstehen was du nun wünschst. Benutze ich deine Codezeile und nehme 50 für das x dann sehe ich die Zeilen 50 bis 83.
Je nach den von dir erwähnten Einstellungen sehen andere vllt. die Zeilen 50-44, 50-62, oder was weiß ich.
Was möchtest du nun was alle „sehen“?

Gruß
Reinhard

Vielen Dank und beste Grüße
-Rob.

Grüezi Rob

Die folgenden Zeilen geben dir Aufschluss über den momentan sichtbaren Bereich auf dem Tabellenblatt.

Ich denke die Berechnung die damit einher geht, bekommst Du selbst gebacken :smile:

Public Sub tr()
With ActiveWindow.VisibleRange
 MsgBox .Address
 MsgBox .Rows.Count
 MsgBox .Columns.Count
End With
End Sub

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Lösung: ActiveWindow.VisibleRange.Rows.Count
Salu Thomas,

vielen Dank, genau das hatte ich gesucht. :smile: Ich habe daraus folgendes, vielleicht auch für andere nützliches Script gebastelt:

Sub JumpScrollToLastline()
 Application.ScreenUpdating = False
 Dim intLastUsedRow As Integer
 With ThisWorkbook.ActiveSheet
 intLastUsedRow = .Cells(Rows.Count, 1).End(xlUp).Row
 .Cells(intLastUsedRow + 1, 1).Select
 ActiveWindow.ScrollRow = intLastUsedRow - ActiveWindow.VisibleRange.Rows.Count + 5
 End With
 Application.ScreenUpdating = True
End Sub

Da das Selekten einer nicht sichtbaren Zelle dazu führt, daß deren Position in die Mitte gescrollt wird, ist das deaktivierte ScreenUpdating hübscher.

Nochmals besten Dank und alles Gute für 2014
-Rob.

Salve Reinhard,

Wie kann ich in Excel ein Blatt so scrollen, daß eine
bestimmte Zeile einen bestimmten Abstand von unten (unterer
Rand) hat.

? Erläutere mir das bitte nochma mit dem Abstand.

Gemeint ist der Abstand einer Zelle/Zeile vom unteren Rand des dargestellten Bereichs. Wenn man das Ende einer Liste zusammen mit den nächsten zwei, drei leeren Zeile gerade noch auf der Seite sehen möchte, muß man eben dahin scrollen.

Mit :

ActiveWindow.ScrollRow = x

kann ich nur den Abstand vom oberen Rand vorgeben.

? Ich sehe den Befehl so daß im Blatt obenlinks dann die Zelle
angezeigt wird deren Zeilennummer x entspricht. Hast du im
Blatt zeilen fixiert so ist das dann wohl die obere Zelle
unterhalb der Fixierung *glaub, nicht getestet*

Stimmt, aber die Fixierung ist hier nicht relevant.

Da ich aber
nicht weiß, wie groß das Excel-Fenster beim Anwender ist,

kann man auslesen.

Genau, und wie eben das geht, wollte ich wissen. :wink:

welche Zoom-Stufe er verwendet

kann man auslesen.

und wie hoch die darüberliegenden Zeilen sind,

kann man auslesen. Und zwar dann wenn man ermittelt hat was
die oberste und die unterste Zeile ist die angezeigt wird.

Naja, das ist ja ein Riesenaufwand, und gottseidank nicht nötig, da die Anzahl der sichtbaren Zeilen auch auslesbar ist.

wäre es doch schön, wenn man
eine bestimmte Zeile dicht an den unteren Rand scrollen
könnte.

? Was meinst du damit genau?

Siehe Script in der Antwort an Thomas.

Ich weiß daß ich hier schonmal vor Jahren für jmdn. Code
bastelte der analog zur Fixierung „unten“ immer z.B. die
Gesamtsumme einer Spalte anzeigte, egal wohin da in der langen
Liste gescrollt wurde.

Das ist auch eine interessante Sache. Bisher baue ich dauerhaft sichtbare Summen immer in die zweite Zeile ein (die dann auch fixiert werden muß und verhindert, daß man einen Autofilter mit Titel benutzen kann).

Danke Dir und viele Grüße vom
-Rob.

Lösung: Scripting
Mit kleinen Verbesserungen (funktioniert auch bei kurzen Listen und mit ausgeblendeten Spalten):

Public Sub JumpScrollToNextline()
 Application.ScreenUpdating = False
 Dim intLastUsedRow As Integer
 Dim intFirstUsedCol As Integer
 Dim intScrollTo As Integer

 intFirstUsedCol = ActiveWindow.VisibleRange.Column

 With ThisWorkbook.ActiveSheet
 intLastUsedRow = .Cells(Rows.Count, intFirstUsedCol).End(xlUp).Row
 .Cells(intLastUsedRow + 1, intFirstUsedCol).Select
 intScrollTo = intLastUsedRow - ActiveWindow.VisibleRange.Rows.Count + 10
 If intScrollTo 

Grüezi Rob

Schau dir statt .Select doch auch mal Application.Goto näher an.

Da kannst Du eine Adresse angeben, die auch auf einem anderen Tabellenblatt liegen kann und diese wird selektiert.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -