Kalenderwoche/Montag der Kalenderwoche
Zwei Funktionen zum Berechnen des Montags einer Kalenderwoche.
Eine Funktion zum Berechnen der Kalenderwoche nach DIN, die auch wirklich funzt.
Andere, oft gepostete Lösungen liefern in der 53. KW mancher Jahre fehlerhafte
Werte.
Beispieldatei (datetime.zip 16 kB)
Public Function MontagDerWoche(Woche, Jahr)
Dim t As Date
t = DateSerial(Jahr, 1, 1) + (7 - WeekDay(DateSerial(Jahr, 1, 1),
3))
MontagDerWoche = t + (Woche - DatePart("ww", t, 2, 2))
* 7
End Function
Public Function MontagDerWoche1(Woche, Jahr) As Date
Dim t As Date
t = DateSerial(Jahr, 1, 1) + (7 - WeekDay(DateSerial(Jahr, 1, 1),
3))
MontagDerWoche1 = t + 7 * (Woche - (((DatePart("ww", _
t, 2, 2) = 53) And (Day(t) >= 29) And (WeekDay(t,
2) _
= 1)) * 52 + DatePart("ww", t, 2, 2)))
End Function
Public Function Kalwoche(Datum As Date) As Integer
Kalwoche = ((DatePart("ww", Datum, 2, 2) = 53) _
And (Day(Datum) >= 29) And (Datum Mod 7 = 2)) _
* 52 + DatePart("ww", Datum, 2, 2)
End Function