Inicio > Microsoft Access > Cálculo de la fecha de Semana Santa

Cálculo de la fecha de Semana Santa

La llamada a la función que calcula la fecha del Domingo de Resurrección se realiza de la siguiente forma:

Private Sub XecSS()
Dim intAnio As Integer
intAnio = InputBox("¿ Qué año ?")
MsgBox "Domingo de resureccion es:  " & funSemanaSanta(intAnio), vbInformation
End Sub

El año debe estar comprendido entre 1583 (inicio del calendario Gregoriano) y 2299. La función que nos devuelve la fecha buscada es la siguiente:

Public Function funSemanaSanta(ByVal Pon_Anio As Integer) As String
Dim bytA As Byte
Dim bytB As Byte
Dim bytC As Byte
Dim bytD As Byte
Dim bytN As Byte
Dim bytM As Byte
Dim bytX As Byte
Dim bytY As Byte
If Pon_Anio >= 1583 And Pon_Anio < = 1699 Then
bytX = 22
bytY = 2
ElseIf Pon_Anio >= 1700 And Pon_Anio < = 1799 Then
bytX = 23
bytY = 3
ElseIf Pon_Anio >= 1800 And Pon_Anio < = 1899 Then
bytX = 23
bytY = 4
ElseIf Pon_Anio >= 1900 And Pon_Anio < = 2099 Then
bytX = 24
bytY = 5
ElseIf Pon_Anio >= 2100 And Pon_Anio < = 2199 Then
bytX = 24
bytY = 6
ElseIf Pon_Anio >= 2200 And Pon_Anio < = 2299 Then
bytX = 25
bytY = 0
Else
MsgBox "Error", vbCritical
Exit Function
End If
bytA = Pon_Anio Mod 19
bytB = Pon_Anio Mod 4
bytC = Pon_Anio Mod 7
bytD = ((19 * bytA) + bytX) Mod 30
bytN = ((2 * bytB) + (4 * bytC) + (6 * bytD) + bytY) Mod 7
bytM = bytD + bytN
If bytM < 10 Then
Rem marzo
funSemanaSanta = bytM + 22 & " Marzo"
Else
Rem abril
If bytM - 9 = 26 Then
funSemanaSanta = "19 Abril"
ElseIf bytD = 28 And bytN = 6 And bytA > 10 Then
funSemanaSanta = "18 Abril"
Else
funSemanaSanta = bytD + bytN - 9 & " Abril"
End If
End If
End Function
Fuente: javier.mil
Categorías:Microsoft Access Etiquetas:, , ,
  1. Aún no hay comentarios.
  1. Aún no hay trackbacks