ich möchte aus einem Zellinhalt (z.B. "22.2007"), welches die Kalenderwoche und das Jahr beinhaltet, den jeweiligen Monat (in diesem Fall: "Mai") extraieren.
Bitte um Eure Hilfe. Vielen Dank
MikeS
Sub test()
'zur verwendung in einem Makro
MsgBox Format(Datum_Aus_KW_und_Wochentag(2004, 14, 1), "ddd dd.mm.yyyy")
End Sub
'
' ein Datum aus Kalenderwoche, Jahreszahl und Wochentag ermitteln
'
Function DatumAusKW(KW As Long, Jahr As Long, WoTag As Long) As Date
Dim Datum As Date
If Jahr > 1900 And Jahr < 2100 And KW > 0 And KW < 54 And WoTag > 0 And WoTag < 8 Then
If Weekday(DateSerial(Jahr, 1, 1), vbMonday) <= 4 Then
Datum = DateSerial(Jahr, 1, 1) - Weekday(DateSerial(Jahr, 1, 1), vbMonday) + 1
Else
Datum = DateSerial(Jahr, 1, 1) - Weekday(DateSerial(Jahr, 1, 1), vbMonday) + 8
End If
Datum = Datum + (7 * (KW - 1)) + (WoTag - 1)
If KW = 53 And _
Not (Weekday(DateSerial(Jahr, 1, 1), vbMonday) = 4 Or _
Weekday(DateSerial(Jahr, 12, 31), vbMonday) = 4) Then
Datum = "31.12.9999"
End If
Else
Datum = "31.12.9999"
End If
DatumAusKW = Datum
End Function
Private Function KWMonat(ByVal intKW%, ByVal intJahr%) As String
Dim i%, Datum As Date
Datum = DateSerial(intJahr, 1, 1)
For i = 0 To 365
If KWoche(Datum + i) = intKW Then
'KWMonat = Month(Datum + i)
Select Case Month(Datum + i)
Case 1: KWMonat = "Januar"
Case 2: KWMonat = "Februar"
Case 3: KWMonat = "März"
Case 4: KWMonat = "April"
Case 5: KWMonat = "Mai"
Case 6: KWMonat = "Juni"
Case 7: KWMonat = "Juli"
Case 8: KWMonat = "August"
Case 9: KWMonat = "September"
Case 10: KWMonat = "Oktober"
Case 11: KWMonat = "November"
Case 12: KWMonat = "Dezember"
End Select
Exit For
End If
Next i
End Function
Private Function KWoche(Datum As Date)
Dim t As Long
t = DateSerial(Year(Datum + (8 - Weekday(Datum)) Mod 7 - 3), 1, 1)
KWoche = ((Datum - t - 3 + (Weekday(t) + 1) Mod 7)) \ 7 + 1
End Function
Trotzdem vielen Dank für Deinen Einsatz :-)
Ciao Mike