« Ostern / Πάσχα
Tabelle der Osterfeste - Source-Code
'VBA Excel Programm zur Berechnung der Osterfeste
'nach dem Gregorianischen und Julianischen Kalender
'Copyright 2016 Hans-Georg Lengwenat, alle Rechte vorbehalten
'
Option Explicit
'************
Sub Main() '*
'************
Dim R, X As Integer 'Variablen
Worksheets("Ostern").Activate 'Arbeitsblatt "Ostern"
Range("A1").Activate 'Zelle A1 ist Ursprung für Offset
For X = 2005 To 2050 'Berechnungszeitraum
' ^^^^ ^^^^
' hier anpassen
'
R = R + 1 'Zeilenzähler
ActiveCell.Offset(R, 0).Value = X 'Jahr in die aktuelle Zelle
ActiveCell.Offset(R, 1).Value = OsternGR(X) 'Ostern in DE in die aktuelle Zelle
ActiveCell.Offset(R, 2).Value = OsternJU(X) 'Ostern in GR in die aktuelle Zelle
If OsternGR(X) = OsternJU(X) Then 'Abfrage, ob beide Ostern gleich
ActiveCell.Offset(R, 3).Value = "=" 'Ostern in DE und GR gleich
ActiveCell.Offset(R, 0).Interior.ColorIndex = 4 'Ostern in DE und GR gleich
ActiveCell.Offset(R, 1).Interior.ColorIndex = 4 'Ostern in DE und GR gleich
ActiveCell.Offset(R, 2).Interior.ColorIndex = 4 'Ostern in DE und GR gleich
ActiveCell.Offset(R, 3).Interior.ColorIndex = 4 'Ostern in DE und GR gleich
Else
End If
Next X 'Zeilenzähler Ende
End Sub
'*****************************************
Function OsternGR(X As Integer) As Date '*
'*****************************************
' Ostern nach dem Gregorianischen Kalender
' Berechnungsformel in einer von Dr. Heiner Lichtenberg, Bonn, modifizierten Form
' aus: H. Lichtenberg,
' Zur Interpretation der Gaußschen Osterformel und ihrer Ausnahmeregeln,
' Historia Mathematica 24, 441 - 444 (1997)
' s. a. https://www.ptb.de/de/org/4/44/441/oste.htm
'
' Jahreszahl X
Dim K, m, s, a, d, R, OG, SZ, OE, OS, Tag, Monat As Integer 'Variablen
K = Int(X / 100) '(1)
m = 15 + Int((3 * K + 3) / 4) - Int((8 * K + 13) / 25) '(2)
s = 2 - Int((3 * K + 3) / 4) '(3)
a = X Mod 19 '(4)
d = (19 * a + m) Mod 30 '(5)
R = Int(d / 29) + Int((d / 28) - Int(d / 29)) * Int(a / 11) '(6)
OG = 21 + d - R '(7) OG ist das Märzdatum des
' Ostervollmonds. Dies
' entspricht dem 14. Tag
' des ersten Monats im
' Mondkalender, genannt
' Nisanu.
SZ = 7 - ((X + Int(X / 4) + s) Mod 7) '(8) SZ ist das Datum des
' ersten Sonntags im März.
OE = 7 - ((OG - SZ) Mod 7) '(9)
OS = OG + OE '(10) Datum des Ostersonntags,
' als Datum im Monat März
' dargestellt. (Der 32. März
' entspricht also dem
' 1. April, usw.)
Select Case OS '(11) Umrechnung
Case Is > 61 ' auf Mai
Tag = OS - 61
Monat = 5
Case Is > 31, Is <= 61 ' auf April
Tag = OS - 31
Monat = 4
Case Is <= 31 ' auf März
Tag = OS
Monat = 3
End Select
OsternGR = DateSerial(X, Monat, Tag)
End Function
'*****************************************
Function OsternJU(X As Integer) As Date '*
'*****************************************
' Ostern nach dem Julianischen Kalender
' Berechnungsformel in einer von Dr. Heiner Lichtenberg, Bonn, modifizierten Form
' aus: H. Lichtenberg,
' Zur Interpretation der Gaußschen Osterformel und ihrer Ausnahmeregeln,
' Historia Mathematica 24, 441 - 444 (1997)
' s. a. https://www.ptb.de/de/org/4/44/441/oste.htm
'
' Jahreszahl X
Dim K, m, s, a, d, R, OG, SZ, OE, OS, Tag, Monat As Integer 'Variablen
K = Int(X / 100) '(1)
m = 15 '(2)
s = 0 '(3)
a = X Mod 19 '(4)
d = (19 * a + m) Mod 30 '(5)
R = Int(d / 29) + Int((d / 28) - Int(d / 29)) * Int(a / 11) '(6)
OG = 21 + d - R '(7) OG ist das Märzdatum des
' Ostervollmonds. Dies
' entspricht dem 14. Tag
' des ersten Monats im
' Mondkalender, genannt
' Nisanu.
SZ = 7 - ((X + Int(X / 4) + s) Mod 7) '(8) SZ ist das Datum des
' ersten Sonntags im März.
OE = 7 - ((OG - SZ) Mod 7) '(9)
OS = OG + OE '(10) Datum des Ostersonntags,
' als Datum im Monat März
' dargestellt. (Der 32. März
' entspricht also dem
' 1. April, usw.)
OS = OS + 13 '(11) plus 13 Tage Differenz
' Jul.-Greg.
Select Case OS '(12) Umrechnung
Case Is > 61 ' auf Mai
Tag = OS - 61
Monat = 5
Case Is > 31, Is <= 61 ' auf April
Tag = OS - 31
Monat = 4
Case Is <= 31 ' auf März
Tag = OS
Monat = 3
End Select
OsternJU = DateSerial(X, Monat, Tag)
End Function
« Ostern / Πάσχα