Scrollen von Spalten
#11
Mal was allgemeines:
Schon "etwas" seltsam, ein Datumsinkrement von 1 zu wählen und die Wochenenden dann per Gruppierung auszublenden …  20
Zu meinem Rechenvorschlag:

Zitat:ActiveWindow.ScrollColumn = 11, damit springe ich nur in die besagte Spalte ohne die Spalten mit dem aktuellen Datum mitzunehmen.
Tja, dann musst Du die Spalte halt errechnen:

Wir haben heute den 44.Tag:
Date - DateSerial(2022, 1, 0)

Allerdings beginnt dein Jahr ja mit dem 3.1.22:
Date - DateSerial(2022, 1, 2)

Da bei Dir jeder Tag doppelt vorkommt, das Ganze mal 2
und da es erst in Spalte J (10) mit den Daten losgeht ist meine Variable t (wie Tag):
t = (Date - DateSerial(2022, 1, 2)) * 2 + 8

Jetzt kannst Du auf meine oben angesprochenen 2 Arten springen
ActiveWindow.ScrollColumn = t
oder
Application.Goto Cells(9, t), True

Übrigens halte ich auch die Markierung per Rahmen für kontraproduktiv!
So etwas regelt man sehr viel einfacher ohne VBA mittels bedingter Formatierung.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#12
Gelöscht.

Hallo,

hatte aus versehen einen weitern Code eingefügt und konnte ihn nicht entfernen, darum den letzten Beitrag gelöscht.

Hier noch einen variablen Code, es gibt auch noch einige Möglichkeiten mehr.
Beim beenden der Datei, würde ich den Rahmen immer entfernen, sonst vermehrt er sich bei jedem erneuten öffnen der Datei.
Code:
Private Sub Worksheet_Activate()
    Dim datPos  As Range
    Dim maxRow  As Long

    Application.EnableEvents = False
   
    maxRow = Cells(Rows.CountLarge, 1).End(xlUp).Row

'    'Wenn weder die Zeile noch die Spalte vom Datum bekannt ist
'    Set datPos = Cells.Find(Date, lookat:=xlWhole)

'    'Wenn nur die Spalte vom Datum bekannt ist
'    Set datPos = Columns(45).Find(Date, lookat:=xlWhole)

    'Wenn nur die Zeile vom Datum bekannt ist
    Set datPos = Rows(2).Find(Date, lookat:=xlWhole)

    If datPos Is Nothing Then MsgBox Date & " nicht gefunden!":  Exit Sub

    'Den alten Rahmen löschen
    Range(Columns(datPos.Column), Columns(datPos.Column + 1)).Borders.LineStyle = xlNone

    'Statt Cells(1, datPos.Column).Resize(maxRow + 50, 2),
    'kann auch jede andere Größe für den Rahmen verwendet werden
    Cells(1, datPos.Column).Resize(maxRow + 50, 2).BorderAround _
        ColorIndex:=3, Weight:=xlThick

    'Statt Cells(1, ..., kann man auch gleich die Gewünschte Zeile wählen
    'z.B. maxRow - 5 Zeilen, wenn man noch die letzten 5 Daten-Zeilen einsehen möchte.
    Application.Goto Reference:=Cells(1, datPos.Column), Scroll:=True
   
    Set datPos = Nothing

    Application.EnableEvents = True

End Sub
Gruß Karl
Antworten Top


Gehe zu:


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