« 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 / Πάσχα