Private Sub Command1_Click()
Dim dt_Pascoa As Variant, dt_Carnaval As Variant, dt_SextaSanta As Variant, dt_CorpusC As Variant, Ano As Long
Ano = CLng(Text1.Text)
subFeriadosMoveis Ano, dt_Pascoa, dt_Carnaval, dt_SextaSanta, dt_CorpusC
MsgBox "Feriados móveis de " & Ano & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Páscoa: " & dt_Pascoa & Chr(13) & Chr(10) & "Carnaval: " & dt_Carnaval & Chr(13) & Chr(10) & "Sexta-feira Santa: " & dt_SextaSanta & Chr(13) & Chr(10) & "Corpus Cristi: " & dt_CorpusC
End Sub
Private Sub subFeriadosMoveis(ByVal Ano As Long, ByRef dt_Pascoa As Variant, ByRef dt_Carnaval As Variant, ByRef dt_SextaSanta As Variant, ByRef dt_CorpusC As Variant)
'Esta função calcula os feriados móveis nacionais:
'Pascoa, Carnaval, Sexta-Feira Santa e CorpusC.
Dim A, B, C, D, E, F, G, H, I, K, L, M, P, Q As Long
A = (Ano Mod 19)
B = Int(Ano / 100)
C = (Ano Mod 100)
D = Int(B / 4)
E = (B Mod 4)
F = Int((B + 8) / 25)
G = Int((B - F + 1) / 3)
H = ((19 * A + B - D - G + 15) Mod 30)
I = Int(C / 4)
K = (C Mod 4)
L = ((32 + 2 * E + 2 * I - H - K) Mod 7)
M = Int((A + 11 * H + 22 * L) / 451)
P = Int((H + L - 7 * M + 114) / 31)
Q = ((H + L - 7 * M + 114) Mod 31)
dt_Pascoa = CDate((Q + 1) & "/" & P & "/" & Ano)
dt_Carnaval = DateAdd("d", -47, dt_Pascoa)
dt_SextaSanta = DateAdd("d", -2, dt_Pascoa)
dt_CorpusC = DateAdd("d", 60, dt_Pascoa)
End Sub