Zu definierter Zelle scrollen/springen

In einer Tabelle sind in Spalte A kalendarische Daten des Jahres aufgeführt, also beginnend am 1. Januar bis zum 31. Dezember des laufenden Jahres. Der Wunsch, die Forderung: Beim Klick auf eine Schaltfläche oder beim Aktivieren des Tabellenblatts soll immer der Erste des aktuellen Monats in der zweitobersten sichtbaren obersten Zeile stehen. Die Oberste Zeile ist stets die fixierte Zeile 1 mit den Überschriften. Folgender Code führt bei Klick auf den entsprechenden Button zum Ziel:

Sub SprungZuZelle()
   Dim Ziel As Range, Zeile As Long, Spalte As Long
   Set Ziel = Range("A1:A400").Find(DateSerial(Year(Date), Month(Date), 1))
   Zeile = Ziel.Row
   Spalte = 1
   With ActiveWindow
      .ScrollColumn = Spalte
      .ScrollRow = Zeile
   End With
End Sub

Soll das bei Aktivierung des Blattes geschehen, dann muss die erste Zeile natürlich anders aussehen:

Sub WorkSheet_Activate()

Der Rest ist wie oben gezeigt. Der Code gehört in beiden Fällen in das Modul der entsprechenden Mappe. Beim aktivieren wird die Mappe automatisch zum Monatsersten scrollen.


Nachtrag: Natürlich ist es auch möglich, zu einer definierten Zelle zu springen und den Bildschirm “von alleine” dorthin scrollen zu lassen. Beispielsweise …

Sub ScrollToXY()
   Dim Adresse As String
   'Gehe zu Adresse
   Application.Goto Reference:=Range("C138"), scroll:=True
     
   'Gehe zu Bereichsname
   Application.Goto Reference:=Range("ZielAdresse"), scroll:=True
   
   'Aus Zelle lesen, Adresse steht in A1,hier: 'C138
   Adresse = Cells(1, 1)
   Application.Goto Reference:=Range(Adresse), scroll:=True
End Sub

▲ nach oben …

Reference: #5874

Dieser Beitrag wurde unter Code-Schnipsel, Tabelle und Zelle abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.