VBA: Aktuelle Kalenderwoche ansteuern und markieren
#1
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


Angehängte Dateien
.xlsm   Kalender_Test.xlsm (Größe: 56,36 KB / Downloads: 10)
Antworten Top
#2
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.


Angehängte Dateien
.xlsm   Kalender_Test.xlsm (Größe: 57,65 KB / Downloads: 18)
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
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
Antworten Top
#4
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.

23  Vielen Dank!   23

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
Antworten Top
#5
Hallo,

(27.01.2022, 19: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
Antworten Top


Gehe zu:


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