Berechnung von Kalenderwochen

Problemstellung:
immer wieder ein Thema ist im Forum der Umgang mit Kalenderwochen.
Ermittlung der Kalenderwoche für Datum und Ermittlung eines Datums und
Wochentages aus einer Kalenderwoche.

Voraussetzungen:
Das Bsp ist ab A07 lauffähig.

Funktionsweise:
Die Errechnung der Kalenderwoche (KW) aus einem Datum geht ja noch.
Wobei die pure Formatierung eines Datums in die KW auch Fehler bei Berechnung von
Jahreswechseln beinhaltet.

Syntax:

 

Dim varKW As Variant
    varKW = Format("DeinDatum", "ww", vbMonday)
    'oder
    varKW = Format("DeinDatum", "ww/yyyy", vbMonday)

 

Genauere Ergebnisse erhält man dann schon mit speziellen Funktionen:

 

Function Kalenderwoche(XDatum As Variant, fModus As Boolean) As String
Dim x, y, z
    Kalenderwoche = ""
If Not IsDate(XDatum) Then Kalenderwoche = "": Exit Function
    XDatum = CDate(XDatum)
    x = Year(XDatum)
    z = Format(XDatum, "ww", vbMonday, vbFirstFourDays)
    y = Int((XDatum - DateSerial(Year(XDatum), 1, 1) + _
        ((Weekday(DateSerial(Year(XDatum), 1, 1)) + 1) Mod 7) - 3) / 7) + 1
 
    If y = 0 Then
        z = Format(DateSerial(x - 1, 12, 31), "ww", vbMonday, vbFirstFourDays)
        If z >= 52 Then x = x - 1
    ElseIf y > 52 And (Weekday(DateSerial(x, 12, 31)) - 1) Mod 7 <= 3 Then
        If Format(XDatum + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then z = 1
        If z = 1 Then x = x + 1
    End If
    If fModus = True Then
        Kalenderwoche = Right("00" & z, 2) & "/" & Right("0000" & x, 4)
    Else
        Kalenderwoche = Right("00" & z, 2)
    End If
End Function

In dieser Funktion werden Jahreswechsel richtig berechnet.
Folgende Argumente müssen übergeben werden:

XDatum= ein formatiertes Datum (sonst gibt die Funktion "" zurück)
boolModus True =Format "ww/jjjj", False =Format "ww"

Syntax:

 

Dim Testdatum as Date
Dim strKW as String
Testdatum = #12/31/2002#   ' Test mit 31.12.2002
strKW = Kalenderwoche(Testdatum, True)

 

Jetzt kommen wir aber zur rekursiven Berechnung, sprich ein Datum aus einer KW zu ermitteln.
Drei Argumente werden benötigt, die KW, das Jahr und den Wochentag.
Die Funktion "GetDateFromWeek" gibt dann das Datum zurück.
Listing s. Bsp-DB

Argumente:

nWeek = KW z.B 50
nDayOfWeek = Wochentag z.B. 1=Montag
nYear =Jahr z.B. 2003

Jetzt kann man noch alle Tage der gewählen KW in einem Listenfeld anzeigen lassen. (s. Bsp-DB)
Das Füllen des Listenfeldes soll hier aber jetzt nicht näher beschrieben werden,
da dies ein extra Thema ergibt.

Downloads:
(0 Stimmen)
Datum11.08.2026
Dateigröße 25.45 KB
Download 5.433

 

Ähnliche Artikel

Wir verwenden Cookies

Wir verwenden Cookies, um Ihr Surferlebnis zu verbessern und den Website-Verkehr zu analysieren. Bitte wählen Sie aus, welchen Cookie-Kategorien Sie zustimmen möchten.