Kalenderwochen eines Monats (VBA)
Erich
Hi Peter,
probiers mal damit:
Private Sub CmdWeiter_Click()
Dim intKW As Integer, intJahr As Integer, ii As Integer
Dim datVon As Date, datMonBeg As Date, datMontag As Date
intKW = TxtKWo1.Value
intJahr = Format(Date, "yyyy")
datVon = Datum_aus_Woche(intJahr, intKW)
datMonBeg = datVon - Day(datVon) + 1
datMontag = datMonBeg - Weekday(datMonBeg, vbTuesday)
For ii = 0 To 5
Controls("TxtKWo" & ii + 1).Text = KalenderWoche(datMontag)
Controls("LblWoVon" & ii + 1).Caption = datMontag
Controls("LblWoBis" & ii + 1).Caption = datMontag + 6
datMontag = datMontag + 7
If Month(datMontag) <> Month(datMonBeg) Then Exit For
Next ii
End Sub
Die Prozedur überschreibt z. B. bei der Eingabe von 53 (in TxtKWo1)
den Inhalt der TB mit der ersten Woche, die in den Dezember 2009 fällt, also 49.
Die folgenden vier TBs werden mit KW 50 bis 53 gefüllt.
(In anderen Jahren kann es auch vorkommen, dass am Jahresende die nächste KW = 1 ist.)
Manchmal im Februar fallen nur 4 Wochen in den Monat,
manchmal fallen auch 6 Wochen in einen Monat (wenn du z. B. KW 45 vorgibst).
Die in Labels angezeigten Tage muss man nicht kompliziert rechnen - es sind einfach immer 7 mehr.
Ist es das, was du möchtest?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort