Hallo Excelperten,
ich habe eine Eceldatei, in der stehen in Zeile 1 ab Spalte C fortlaufend für jede Kalenderwoche 3 Spalten.
Spalte 1 "Datum von" Spalte 3 "Datum bis"
Per VBA möchte ich steuern, dass
- beim Öffnen der Datei
- die aktuelle Klenderwoche angezeigt wird
- die aktuelle Kalenderwoche vollständig rechts randbildend angezeigt wird (d.h. Spalte 3 der aktuellen Kalenderwoche "Datum bis" ist die letzte angezeigte Spalte, damit man die Vorwochen soweit möglich sieht)
- die 3 Zellen der aktuellen Kalenderwoche in Zeile 1 farblich markiert werden.
Kann mir jemand helfen?
Vielen Dank im Voraus
Excelbeginner
Hallo,
habe ein Makro für deine Anfrage erstellt. Leider funktioniert es in deiner Datei nicht, weil deine Datumangaben in Zeile 1 falsch sind. Möchtest du es trotzdem haben?
Hallo,
habe die Daten angepasst. Bis auf die Positionierung ist jetzt alles umgesetzt.
Hallo Klaus-Dieter
dein Makro ist gut, fanastisch gut. Da ziehe ich meinen Hut ab. Habe noch einen Befehl angehangen, dmit die aktive Wochen Spalte sichtbar wird.
Range(Cells(1, lngCol), Cells(1, lngCol + 2)).Interior.Color = 65535
ActiveWindow.ScrollColumn = lngCol
mfg Gast 123
Hallo Klaus-Dieter,
habe 1 Stunde darauf rumgedacht, weil ich keine Ahnung habe.
Raffiniert, mit
lngDatum = Date - Weekday(Date) + 2
passt Du das zu matchende Datum dem Beginndatum der Wochen an.
Vielen Dank auch an Gast 123. Das Hinscrollen zur aktuellen Woche fehlte mir noch.
Habe das jetzt, weil ich die aktuelle und die drei Wochen davor sehen möchte, auf
ActiveWindow.ScrollColumn = lngCol - 9
modifiziert.
Klasse, genau, wie ich es haben wollte.
Vielen Dank!
Excelbeginner
Option Explicit
Private Sub Workbook_Open()
Dim lngDatum As Long
Dim lngCol As Variant
Rows(1).Interior.Color = xlNone
lngDatum = Date - Weekday(Date) + 2
lngCol = Application.Match(lngDatum, Rows(1), 0)
Range(Cells(1, lngCol), Cells(1, lngCol + 2)).Interior.Color = 65535
ActiveWindow.ScrollColumn = lngCol - 9
End Sub
Hallo,
(27.01.2022, 18:07)Excelbeginner schrieb: [ -> ]Habe das jetzt, weil ich die aktuelle und die drei Wochen davor sehen möchte, auf
ActiveWindow.ScrollColumn = lngCol - 9
Etwas flexibler bzw. unabhängig von Spalten- oder Fensterbreiten und Zoomeinstellungen wäre es z.B. so:
Code:
Private Sub Workbook_Open()
Dim lngDatum As Long
Dim varCol As Variant
lngDatum = Date - Weekday(Date) + 2
varCol = Application.Match(lngDatum, Rows(1), 0)
If Not IsError(varCol) Then
Rows(1).Interior.Color = xlNone
Cells(1, varCol).Resize(, 3).Interior.Color = 65535
Cells(1, varCol + 2).Select
Do While ActiveWindow.VisibleRange.Columns(1).Offset(, ActiveWindow.VisibleRange.Columns.Count).Column > varCol + 3
ActiveWindow.SmallScroll Toleft:=1
Loop
ActiveWindow.SmallScroll ToRight:=1
End If
End Sub
Gruß Uwe