
Public Function Pasqua(ByVal Anno As Integer) As Date 'Il metodo è valido per tutti gli anni nel Calendario Gregoriano, 'ossia dal 1583 in poi Dim a%, b%, C%, p%, q%, R% a = Anno% Mod 19: b = Anno% 100: C = Anno% Mod 100 p = (19 * a + b - (b 4) - ((b - ((b + 8) 25) + 1) 3) + 15) Mod 30 q = (32 + 2 * ((b Mod 4) + (C 4)) - p - (C Mod 4)) Mod 7 R = (p + q - 7 * ((a + 11 * p + 22 * q) 451) + 114) Pasqua = DateSerial(Anno%, R 31, (R Mod 31) + 1) End Function |
Public Function Pasqua(Anno As Integer) As Date
Dim A%, B%, C%, P%, Q%, R%
A = Anno% Mod 19: B = Anno% 100: C = Anno% Mod 100
P = (19 * A + B - (B 4) - ((B - ((B + 8) 25) + 1) 3) + 15) Mod 30
Q = (32 + 2 * ((B Mod 4) + (C 4)) - P - (C Mod 4)) Mod 7
R = (P + Q - 7 * ((A + 11 * P + 22 * Q) 451) + 114)
Pasqua = DateSerial(Anno%, R 32, (R Mod 31) + 1)
End Function
Public Function Calcola_Data(Data As Date, Num_Giorni As Long) As Date
Dim Giorni_Festivi() As Variant, Festivita As Boolean, F As Variant
Giorni_Festivi = Array("1-1", "6-1", "25-04", "1-5", "2-6", "15-8", "1-11", "8-12", "25-12", "26-12")
Do While Num_Giorni > 0
If Weekday(Data, 2) < 6 Then ' weekend
Festivita = False
' festività
For Each F In Giorni_Festivi
If Day(F) = Day(Data) And Month(F) = Month(Data) Then
Festivita = True
Exit For
End If
Next F
' pasqua e pasquetta
If Data = Pasqua(Year(Data)) And Data = Pasqua(Year(Data)) + 1 Then Festivita = True
If Not Festivita Then Num_Giorni = Num_Giorni - 1
End If
Data = Data + 1
Loop
Calcola_Data = Data
End Function
|
Public Function Calcola_Data(ByVal Data As Date, ByVal Num_Giorni As Long) As Date
Do While Num_Giorni > 0
If Not IsWeekEnd(Data) And Not IsFestivo(Data) Then Num_Giorni = Num_Giorni - 1
Data = Data + 1
Loop
Do While IsWeekEnd(Data) Or IsFestivo(Data)
Data = Data + 1
Loop
Calcola_Data = Data
End Function
|
