Benutzung auf eigene Gefahr ! |
Beschreibung |
Beide Programme bestimmen zu einem Datum die Kalenderwoche. Das Programm KW() ist sehr kurz, denn es basiert auf der eingebaute Format-Funktion. Diese hat aber einen kleinen Fehler, sich in wenigen Fällen zeigt, wenn die Kalenderwoche zum letzten Montag im Jahr berechnet werden soll. Gelegentlich (z.B. 29.12.2003, 30.12.1991, 31.12.1979) wird hier KW 53 ausgegeben, obwohl der Tag bereits in KW 1 liegt. |
VBA-Quelltext |
Public Function KW(Datum As Date) As Byte KW = Format(Datum, "ww", vbMonday, vbFirstFourDays) End Function Public Function KalenderWoche(Datum As Date) As Byte Dim NeuJahr As Date, NeuJahrWochenTag As Byte Dim Silvester As Date, SilvesterWochenTag As Byte Dim BeginnWoche1 As Date, EndeWoche5x As Date Application.ScreenUpdating = True NeuJahr = DateSerial(Year(Datum), 1, 1) NeuJahrWochenTag = Weekday(NeuJahr, vbMonday) BeginnWoche1 = NeuJahr - NeuJahrWochenTag + 1 _ + IIf(NeuJahrWochenTag < 5, 0, 7) Silvester = DateSerial(Year(Datum), 12, 31) SilvesterWochenTag = Weekday(Silvester, vbMonday) EndeWoche5x = Silvester - SilvesterWochenTag _ + IIf(SilvesterWochenTag <= 3, 0, 7) Select Case Datum Case Is < BeginnWoche1 Select Case NeuJahrWochenTag Case 1 To 4 ' Mo...Do KalenderWoche = 1 Case 5 ' Freitag KalenderWoche = 53 Case 6 ' Sa KW 52, am Ende von Schaltjahren KW 53 KalenderWoche = IIf((Year(Datum) - 1) Mod 4 = 0, 53, 52) Case 7 ' So -> KW 52 KalenderWoche = 52 End Select Case Is > EndeWoche5x KalenderWoche = 1 Case Else KalenderWoche = (Datum - BeginnWoche1) \ 7 + 1 End Select End Function |
Argumente der Funktion/Prozedur |
|
Rückgabewert |
Kalenderwoche als Zahl zwischen 1 und 53 |
Hinweis |
Die Berechnung der Kalenderwoche in Deutschland beruht auf folgenden Bestimmungen:
Besondere Fallunterscheidung sind zu treffen, wenn die Kalenderwoche für die ersten Tage des Jahres bestimmt werden sollen:
|
Anwendungsgebiete, Fehler und Warnungen |
Das Programm liefert die korrekte Kalenderwoche zwischen 1901 und 2099 |