Naja,
weil auch Lordchen mal angefangen hat .... ein Erstwerk in ooP ... lange ist's her ....
Class1:
<code><font color=#000099>Option</font> <font color=#000099>Explicit</font>
<font color=#000099>Private</font> tmpDatum <font color=#000099>As</font> _
Variant
<font color=#000099>Public</font> Event Feiertag(<font _
color=#000099>ByVal</font> TXTFeiertag <font color=#000099>As</font> <font _
color=#000099>String</font>)
<font color=#000099>Public</font> Event <font color=#000099>Error</font>(<font _
color=#000099>ByVal</font> NewError <font color=#000099>As</font> <font _
color=#000099>String</font>)
<font color=#000099>Private</font> tmpIsFeiertag <font color=#000099>As</font> _
<font color=#000099>Boolean</font>
<font color=#000099>Private</font> tmpFeiertag <font color=#000099>As</font> _
<font color=#000099>String</font>
<font color=#000099>Private</font> tmpError <font color=#000099>As</font> <font _
color=#000099>String</font>
<font color=#000099>Private</font> tmpFTyp <font color=#000099>As</font> _
clsFeiertagTyp
<font color=#000099>Private</font> tmpFTypes <font color=#000099>As</font> _
<font color=#000099>Collection</font>
<font color=#000099>Private</font> tmpWoT(7) <font color=#000099>As</font> _
<font color=#000099>String</font>
<font color=#000099>Private</font> tmpT <font color=#000099>As</font> <font _
color=#000099>String</font>
<font color=#000099>Private</font> tmpB <font color=#000099>As</font> <font _
color=#000099>String</font>
<font color=#000099>Private</font> tmpBListe <font color=#000099>As</font> _
Variant
<font color=#000099>Private</font> tmpEingang <font color=#000099>As</font> _
<font color=#000099>Boolean</font>
<font color=#000099>Private</font> <font color=#000099>Sub</font> _
Class_Initialize()
tmpWoT(1) = "Sonntag"
tmpWoT(2) = "Montag"
tmpWoT(3) = "Dienstag"
tmpWoT(4) = "Mittwoch"
tmpWoT(5) = "Donnerstag"
tmpWoT(6) = "Freitag"
tmpWoT(7) = "Samstag"
tmpEingang = <font color=#000099>False</font>
Ausrechnen Year(Date)
<font color=#000099>End</font> <font color=#000099>Sub</font>
<font color=#000099>Public</font> Property Get FeiertagListe() <font _
color=#000099>As</font> Variant
<font color=#000099>Dim</font> i <font color=#000099>As</font> <font _
color=#000099>Byte</font>
<font color=#000099>Dim</font> myvar() <font color=#000099>As</font> <font _
color=#000099>String</font>
i = 0
<font color=#000099>On</font> <font color=#000099>Error</font> Resume <font _
color=#000099>Next</font>
<font color=#000099>ReDim</font> myvar(tmpFTypes.Count - 1, 3)
<font color=#000099>For</font> Each tmpFTyp In tmpFTypes
myvar(i, 0) = tmpFTyp.FName
<font color=#000099>If</font> Len(tmpFTyp.FDate) = 8 <font _
color=#000099>Then</font>
myvar(i, 3) = "fest"
<font color=#000099>Else</font>
myvar(i, 3) = "beweglich"
<font color=#000099>End</font> <font color=#000099>If</font>
myvar(i, 1) = CVDate(tmpFTyp.FDate)
myvar(i, 2) = tmpWoT(Weekday(tmpFTyp.FDate))
i = i + 1
<font color=#000099>Next</font>
FeiertagListe = myvar
<font color=#000099>End</font> Property
<font color=#000099>Public</font> Property Get BenutzerListe() <font _
color=#000099>As</font> Variant
BenutzerListe = tmpBListe
<font color=#000099>End</font> Property
<font color=#000099>Public</font> Property Let BenutzerListe(vNewValue <font _
color=#000099>As</font> Variant)
<font color=#000099>Dim</font> mykon() <font color=#000099>As</font> _
<font color=#000099>String</font>
<font color=#000099>Dim</font> i, m <font color=#000099>As</font> <font _
color=#000099>Long</font>
tmpEingang = <font color=#000099>True</font>
<font color=#000099>If</font> <font color=#000099>Not</font> IsArray( _
vNewValue) <font color=#000099>Then</font>
tmpError = "Der eingegebene Datentyp ist ungültig. Eigenschaft" & _
"<Benutzerliste>"
RaiseEvent <font color=#000099>Error</font>(tmpError)
<font color=#000099>Else</font>
m = <font color=#000099>UBound</font>(vNewValue, 1)
<font color=#000099>ReDim</font> mykon(m, 1)
<font color=#000099>For</font> i = 0 <font color=#000099>To</font> m
<font color=#000099>Set</font> tmpFTyp = <font _
color=#000099>New</font> clsFeiertagTyp
tmpFTyp.FName = vNewValue(i, 0)
tmpFTyp.FDate = vNewValue(i, 1)
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Next</font>
<font color=#000099>End</font> <font color=#000099>If</font>
Erase mykon
<font color=#000099>End</font> Property
<font color=#000099>Public</font> Property Get IstFeiertag() <font _
color=#000099>As</font> <font color=#000099>Boolean</font>
IstFeiertag = tmpIsFeiertag
<font color=#000099>End</font> Property
<font color=#000099>Public</font> Property Get Feiertag() <font _
color=#000099>As</font> <font color=#000099>String</font>
Feiertag = tmpFeiertag
<font color=#000099>End</font> Property
<font color=#000099>Public</font> Property Get Fehler() <font _
color=#000099>As</font> <font color=#000099>String</font>
Fehler = tmpError
<font color=#000099>End</font> Property
<font color=#000099>Public</font> <font color=#000099>Sub</font> Datum(<font _
color=#000099>ByVal</font> vNewValue <font color=#000099>As</font> Variant)
<font color=#000099>If</font> <font color=#000099>Not</font> IsDate( _
vNewValue) <font color=#000099>Then</font>
tmpError = "Das eingegebene Datum ist ungültig. Eigenschaft <Datum>"
RaiseEvent <font color=#000099>Error</font>(tmpError)
<font color=#000099>Exit</font> <font color=#000099>Sub</font>
<font color=#000099>End</font> <font color=#000099>If</font>
tmpDatum = vNewValue
<font color=#000099>If</font> Year(vNewValue) <> Year(Date) <font _
color=#000099>Then</font> Ausrechnen (Year(vNewValue))
<font color=#000099>For</font> Each tmpFTyp In tmpFTypes
<font color=#000099>If</font> CVDate(tmpFTyp.FDate) = CVDate(vNewValue) _
<font color=#000099>Then</font>
tmpIsFeiertag = <font color=#000099>True</font>
tmpFeiertag = tmpFTyp.FName
tmpT = tmpWoT(Weekday(CVDate(vNewValue)))
<font color=#000099>If</font> Len(tmpFTyp.FDate) = 8 <font _
color=#000099>Then</font>
tmpB = "fest"
<font color=#000099>Else</font>
tmpB = "beweglich"
<font color=#000099>End</font> <font color=#000099>If</font>
RaiseEvent Feiertag(<font color=#000099>ByVal</font> tmpFTyp.FName)
<font color=#000099>Exit</font> <font color=#000099>For</font>
<font color=#000099>Else</font>
tmpIsFeiertag = <font color=#000099>False</font>
tmpFeiertag = vbNullChar
tmpT = ""
tmpB = ""
<font color=#000099>End</font> <font color=#000099>If</font>
<font color=#000099>Next</font>
<font color=#000099>End</font> <font color=#000099>Sub</font>
<font color=#000099>Private</font> <font color=#000099>Function</font> _
Osterdatum(<font color=#000099>ByVal</font> Jahr <font _
color=#000099>As</font> <font color=#000099>Integer</font>) <font _
color=#000099>As</font> Date
<font color=#000099>Dim</font> A, b, c, d, e, tag, monat <font _
color=#000099>As</font> <font color=#000099>Integer</font>
A = Jahr Mod 19
b = Jahr Mod 4
c = Jahr Mod 7
d = (19 * A + 24) Mod 30
e = (2 * b + 4 * c + 6 * d + 5) Mod 7
tag = 22 + d + e
monat = 3
<font color=#000099>If</font> tag > 31 <font color=#000099>Then</font>
tag = d + e - 9
monat = 4
<font color=#000099>ElseIf</font> tag = 26 <font color=#000099>And</font> _
monat = 4 <font color=#000099>Then</font>
tag = 19
<font color=#000099>ElseIf</font> tag = 25 <font color=#000099>And</font> _
monat = 4 <font color=#000099>And</font> d = 28 <font _
color=#000099>And</font> e = 6 <font color=#000099>And</font> A > 10 _
<font color=#000099>Then</font>
tag = 18
<font color=#000099>End</font> <font color=#000099>If</font>
Osterdatum = DateSerial(Year:=Jahr, Month:=monat, Day:=tag)
<font color=#000099>End</font> <font color=#000099>Function</font>
<font color=#000099>Private</font> <font color=#000099>Sub</font> Ausrechnen( _
<font color=#000099>ByVal</font> xjahr <font color=#000099>As</font> <font _
color=#000099>String</font>)
<font color=#000099>Dim</font> j <font color=#000099>As</font> <font _
color=#000099>String</font>
<font color=#000099>Dim</font> myd <font color=#000099>As</font> Date
<font color=#000099>Dim</font> myx <font color=#000099>As</font> Date
<font color=#000099>Dim</font> f <font color=#000099>As</font> <font _
color=#000099>Byte</font>
typensetzen
j = Right(xjahr, 2)
myd = Osterdatum(xjahr)
<font color=#000099>For</font> Each tmpFTyp In tmpFTypes
f = InStr(1, tmpFTyp.FDate, ".")
<font color=#000099>If</font> f <> 0 <font color=#000099>Then</font>
tmpFTyp.FDate = tmpFTyp.FDate + j
<font color=#000099>Else</font>
Select Case tmpFTyp.FDate
Case "Karfreitag"
tmpFTyp.FDate = DateAdd("d", -2, myd)
Case "Ostersonntag"
tmpFTyp.FDate = myd
Case "Ostermontag"
tmpFTyp.FDate = DateAdd("d", 1, myd)
Case "Christi Himmelfahrt"
myx = DateAdd("d", 49, myd)
myx = DateAdd("ww", -1, myx)
myx = DateAdd("d", -3, myx)
tmpFTyp.FDate = myx
Case "Pfingstsonntag"
tmpFTyp.FDate = DateAdd("d", 49, myd)
Case "Pfingstmontag"
tmpFTyp.FDate = DateAdd("d", 50, myd)
Case "Fronleichnam"
tmpFTyp.FDate = DateAdd("d", 60, myd)
Case "Buß- und Bettag"
myd = "24.12." + j
<font color=#000099>Do</font> <font color=#000099>While</font> _
Weekday(myd) <> 1
myd = DateAdd("d", -1, myd)
<font color=#000099>Loop</font>
myd = DateAdd("ww", -4, myd)
myd = DateAdd("d", -4, myd)
tmpFTyp.FDate = myd
<font color=#000099>End</font> Select
<font color=#000099>End</font> <font color=#000099>If</font>
<font color=#000099>Next</font>
<font color=#000099>End</font> <font color=#000099>Sub</font>
<font color=#000099>Private</font> <font color=#000099>Sub</font> typensetzen()
<font color=#000099>Set</font> tmpFTypes = <font color=#000099>Nothing</font>
<font color=#000099>Set</font> tmpFTypes = <font color=#000099>New</font> _
<font color=#000099>Collection</font>
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Neujahr"
.FDate = "01.01."
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Dreikönigstag"
.FDate = "06.01."
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Karfreitag"
.FDate = "Karfreitag"
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Ostersonntag"
.FDate = "Ostersonntag"
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Ostermontag"
.FDate = "Ostermontag"
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Christi Himmelfahrt"
.FDate = "Christi Himmelfahrt"
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Pfingstsonntag"
.FDate = "Pfingstsonntag"
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Pfingstmontag"
.FDate = "Pfingstmontag"
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Tag der Arbeit"
.FDate = "01.05."
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Fronleichnam"
.FDate = "Fronleichnam"
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Mariae Himmelfahrt"
.FDate = "15.08."
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Tag der deutschen Einheit"
.FDate = "03.10."
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Reformationstag"
.FDate = "31.10."
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Allerheiligen"
.FDate = "01.11."
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "Buß- und Bettag"
.FDate = "Buß- und Bettag"
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "1. Weihnachtsfeiertag"
.FDate = "25.12."
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>Set</font> tmpFTyp = <font color=#000099>New</font> _
clsFeiertagTyp
<font color=#000099>With</font> tmpFTyp
.FName = "2. Weihnachtsfeiertag"
.FDate = "26.12."
<font color=#000099>End</font> <font color=#000099>With</font>
tmpFTypes.Add tmpFTyp, tmpFTyp.FDate
<font color=#000099>End</font> <font color=#000099>Sub</font>
<font color=#000099>Public</font> Property Get Wochentag() <font _
color=#000099>As</font> Variant
Wochentag = tmpT
<font color=#000099>End</font> Property
<font color=#000099>Public</font> Property Get FeiertagTyp() <font _
color=#000099>As</font> Variant
FeiertagTyp = tmpB
<font color=#000099>End</font> Property
<font color=#000099>Public</font> Property Get Count() <font _
color=#000099>As</font> Variant
Count = tmpFTypes.Count
<font color=#000099>End</font> Property
<font color=#000099>Public</font> <font color=#000099>Sub</font> Remove(<font _
color=#000099>ByVal</font> Index <font color=#000099>As</font> <font _
color=#000099>Long</font>)
tmpFTypes.Remove Index
<font color=#000099>End</font> <font color=#000099>Sub</font>
<font color=#000099>Public</font> <font color=#000099>Sub</font> Add(newi <font _
color=#000099>As</font> clsFeiertagTyp, <font color=#000099>ByVal</font> _
nDate <font color=#000099>As</font> Date)
tmpFTypes.Add newi, nDate
<font color=#000099>End</font> <font color=#000099>Sub</font>
'<font color=#000099>Public</font> Property Let Item(<font
' color=#000099>ByVal</font> Index <font color=#000099>As</font> <font
' color=#000099>Long</font>)
<font color=green>' Set Item = tmpFTypes.Item(Index)</font>
'<font color=#000099>End</font> Property
</code>würde ich heute etwas anders proggen ...
cu
Lordchen |