Zurück zur Homepage

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