Daher habe ich mal ein Test-Makro geschrieben, wobei der Wochentagsparameter (hier: 'vbmonday') unerheblich ist, Problem bereitet offensichtlich das Einsetzen der Variablen "heute" in die Funktion.
Hierzu habe ich eine kleine Testabelle geschrieben, wo ich in Zelle B3 die Funktion =heute() eingesetzt habe. In Zelle C4 habe ich das aktuelle Datum händisch eingetragen (z. B. 14.08.2024).
Die Ergebnisse des Makros stehen dann in den Zellen B4 bis D4.
Als Ergebnisse bekomme ich folgende Werte geliefert:
Ergebnis B4: 3;
Ergebnis C4: 3;
Ergebnis D4: 6.
Kann jemand erklären, warum das Einsetzen von "heute" in die weekday-Funktion ein anderes Ergebnis liefert als per Variable, die auf Daten in der Tabelle zugreift?
Hier noch das Test-Makro:
Sub vbweekdayNummer1()
' Das aktuelle Datum ist Mittwoch, 14.08.2024.
' Je nach Kalenderfortschritt ist in der Testtabelle in B3 das jeweilige Tagesdatum händisch einzufügen!!!
Dim Datum
Dim WochentagNummer As Integer
' Die Zelle B3 enthält die Funktion 'heute()'
Datum = ActiveSheet.Range("B3").value
WochentagNummer = Weekday(Datum, vbMonday)
ActiveSheet.Range("B4").value = WochentagNummer
' Die Zelle C3 enthält das fixe Datum '14.08.2024'
Datum = ActiveSheet.Range("C3").value
WochentagNummer = Weekday(Datum, vbMonday)
ActiveSheet.Range("C4").value = WochentagNummer
' Die Funktion 'Weeday' mit 'heute' als Variable
WochentagNummer = Weekday(heute, vbMonday)
ActiveSheet.Range("D4").value = WochentagNummer
End Sub