Habe unteren Code für eine Combobox (cmbKw) in der Userform bekommen.
Der zeigt mir beim öffnen der UserForm die aktuelle Kalenderwoche an.
Ich möchte aber das es die aktuelle KW +1 anzeigt.
Also heute ist die KW 38, die auch angezeigt wird.
Es sollte aber die KW 39 anzeigen.
Könnte mir Bitte jemand zeigen wo was geändert gehört?
Traue mich seber nicht drüber,möchte den Code nicht zerstören bzw. unbrauchbar machen.
Gruss, Heinz
Private Sub cmbKw_Change()
Dim t As Date
KW = cmbKw.ListIndex + 1
' Datum des Montages lt. Kalenderwoche ermittelnMontag
t = MONTAG_kW(KW, Jahr)
' Tag, Monat u. Jahr daraus bestimmen
Tag = Day(t): Monat = Month(t): Jahr = Year(t)
' Combobox 'cmbWo' mit Wochentag und 'cmbWoDatum' mit Datum füllen
Call TAG_DATUM_nach_Kalenderwoche
End Sub
'Berechnet die KW nach DIN 1355
Function KALENDERWOCHE_DIN(Datum As Date) As Integer
Dim t As Long
t = DateSerial(Year(Datum + (8 - Weekday(Datum)) Mod 7 - 3), 1, 1)
KALENDERWOCHE_DIN = (Datum - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
End Function
'gibt den Montag der übergebenen KW zurück
Public Function MONTAG_kW(KW As Integer, Jahr As Integer) As Date
Dim t As Date
t = DateSerial(Jahr, 1, 1) + (KW - 1) * 7
t = t + 1 - Weekday(t, vbMonday)
If Format(t, "ww", vbMonday, vbFirstFourDays) KW Then t = t + 7
MONTAG_kW = t
End Function