Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen | VB-Versionen: VB4, VB5, VB6 | 25.03.02 |
KW2Datum Eine Funktion, die den Wochenanfang/-Ende zu einer bestimmten Kalenderwoche eines bestimmten Jahres ermittelt. | ||
Autor: Jürgen Löwel | Bewertung: | Views: 14.650 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wann war doch gleich die KW 17 - keinen Kalender mit Wochenangabe zur Hand, dann hätte ich eine Tip...
Die VB Boardmittel bietet zwar die Möglichkeit, zu einem Datum die entsprechende Kalenderwoche zu ermitteln, der umgekehrte Weg wurde anscheinend nicht berücksichtigt.
Der Aufruf erfolgt über Woche(Kalenderwoche, Jahr, ggf. noch der Definition des ersten Wochetages, und/oder der Definition der ersten Kalenderwoche).
Über die beiden Variablen von und bis gibts dann als Datum Anfang und Ende der gesuchten Woche zurück.
Den nachfolgenden Code bitte in ein Modul einfügen (da als "Pubic" deklariert)
Public Type Week von As Date bis As Date End Type
Public Function Woche(ByVal KW As Integer, _ ByVal Jahr As Integer, _ Optional FirstDayOfWeek As VbDayOfWeek = vbMonday, _ Optional FirstWeekOfYear As VbFirstWeekOfYear = vbFirstFourDays _ ) As Week Dim Datum As Date ' Datum auf den 7. Januar setzen, dem größtmöglichen ' Wert für den Beginn der ersten Kalenderwoche Datum = "07.01." & Jahr ' Wochenbeginn der ersten Kalenderwoche ermitteln While (Format(Datum, "WW", FirstDayOfWeek, FirstWeekOfYear) <> 1) Or _ (Weekday(Datum, FirstDayOfWeek) <> 1) Datum = Datum - 1 Wend ' Wochenbeginn der gesuchten KW ermitteln Datum = Datum + 7 * (KW - 1) Woche.von = Datum Woche.bis = Datum + 6 End Function
Beispiel
Dim iKW As Integer Dim iJahr As Integer Dim tWoche As Week iKW = 15 ' Kalenderwoche iJahr = 2002 ' Kalenderjahr tWoche = Woche(iKW, iJahr) MsgBox "Kalenderwoche " & CStr(iKW) & ":" & vbCrLf & _ Woche.Von & " - " & Woche.Bis