PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : brauche SCHNELLE help@visual basic (einfach)


cereal
2003-05-27, 17:32:05
hi leude, wir müssen in DV nen programm schreiben, hier die anweisung:


Wir sollen halt ein jahr eingeben und das programm soll dann das datum für ostersonntag ausrechnen. Sorry, hab absolut keinen Plan, hoffe ihr könnt mir weiterhelfen!


mfg

stabilo_boss13
2003-05-27, 22:08:49
Ostern ist stets am ersten Sonntag nach dem ersten Vollmond des Frühlingsanfangs (23.03).

'Osterformel nach Carl Friedrich Gauß (1777-1855)
Public Type Feiertage_Type
Ostersonntag As Date
Ostermontag As Date '1 Tag nach Ostersonntag
Karfreitag As Date '2 Tage vor Ostersonntag
Pfingstsonntag As Date '49 Tage nach Ostersonntag
PfingstMontag As Date '50 Tage nach Ostersonntag
Himmelfahrt As Date '39 Tage nach Ostersonntag
Aschermittwoch As Date '46 Tage vor Ostersonntag
Fronleichnam As Date '60 Tage nach Ostersonntag
End Type

Public Function Get_Feiertage(ByVal Jahr As Long) _
As Feiertage_Type

Dim a, b, c, d, e, f, s As Integer
Dim M, N As Integer

'Gültigkeitsbereich ist vom Jahre 1583 - 8202
If Jahr < 1583 Or Jahr > 8202 Then Exit Function

'Diese Function Rechnet das Datum des
'Vollmondes aus
a = Jahr Mod 19
b = Jahr Mod 4
c = Jahr Mod 7
M = Val(((8 * Val(Jahr / 100) + 13) / 25) - 2)
s = Val(Jahr / 100) - Val(Jahr / 400) - 2
M = (15 + s - M) Mod 30
N = (6 + s) Mod 7
d = (M + 19 * a) Mod 30
If d = 29 Then
d = 28
ElseIf d = 28 Then
If (Jahr Mod 19) > 10 Then d = 27
End If
e = (2 * b + 4 * c + 6 * d + N) Mod 7

With Get_Feiertage
.Ostersonntag = DateAdd("d", (d + e + 1), "21.03." & Jahr)
.Ostermontag = DateAdd("d", 1, .Ostersonntag)
.Karfreitag = DateAdd("d", -2, .Ostersonntag)
.Pfingstsonntag = DateAdd("d", 49, .Ostersonntag)
.Pfingstmontag = DateAdd("d", 50, .Ostersonntag)
.Himmelfahrt = DateAdd("d", 39, .Ostersonntag)
.Aschermittwoch = DateAdd("d", -46, .Ostersonntag)
.Fronleichnam = DateAdd("d", 60, .Ostersonntag)
End With
End Function

Beispiel:

'Ostersonntag 2002
Dim f As Feiertage_Type
f = Get_Feiertage(2002)
Debug.Print f.Ostersonntag


Quelle: http://www.vbarchiv.net/archiv/tipp_details.php?pid=120%5C