AW: @ Josef E.
20.01.2010 00:14:44
Josef
Hallo Christian,
du hast rech, aber wie Harry schon sagte, braucht er es so.
Der grund dafür ist einfach erklärt. Immer wenn der 1. eines Monats auf Sa oder So fällt,
dann ist der 3. Sonntag vor dem 3. Freitag. Der folgende Code berücksichtigt das.
Sub DatumSpezial()
Dim intIndex As Integer, intYear As Integer, intDay As Long, intMonth As Integer
Dim vntDate() As Variant
intYear = Application.InputBox("Bitte das gewünschte Jahr eingeben", "Datumsfolge", Year(Date), Type:=1)
Redim vntDate(1 To 1)
If intYear < 1 Or intYear > 3999 Then Exit Sub
For intMonth = 1 To 12
For intDay = 1 To 22
If Weekday(DateSerial(intYear, intMonth, intDay), 2) = 5 Then
Redim Preserve vntDate(1 To UBound(vntDate) + IIf(UBound(vntDate) = 1, 2, 3))
vntDate(UBound(vntDate) - 2) = Clng(DateSerial(intYear, intMonth, intDay))
vntDate(UBound(vntDate) - 1) = Clng(DateSerial(intYear, intMonth, intDay + 14))
vntDate(UBound(vntDate)) = Clng(DateSerial(intYear, intMonth, intDay + IIf(intDay > 5, 9, 16)))
Exit For
End If
Next
Next
Range("A2").Resize(UBound(vntDate), 1) = Application.Transpose(vntDate)
End Sub
Gruß Sepp