[Public Function VerificaSeFeriado(dDataX As Date) As Boolean
Dim FeriadosFixos(9) As String
Dim FeriadosMoveis(2) As Date
Dim iAnoX As Integer
Dim dPascoa As Date
iAnoX = Year(dDataX)
dPascoa = CalculaPascoa(iAnoX)
FeriadosFixos(0) = "1/1" 'Confraternização Universal
FeriadosFixos(1) = "21/4" 'Tiradentes
FeriadosFixos(2) = "1/5" 'Trabalho
FeriadosFixos(3) = "7/9" 'Independência do Brasil
FeriadosFixos(4) = "20/9" 'Revolução Farroupilha
FeriadosFixos(5) = "12/10" 'Nossa Senhora Aparecida
FeriadosFixos(6) = "2/11" 'Finados
FeriadosFixos(7) = "15/11" 'Proclamação da Repúplica
FeriadosFixos(8) = "25/12" 'Natal
FeriadosFixos(9) = "2/2" 'Navegantes
FeriadosMoveis(0) = DateAdd("d", -2, dPascoa) 'Sexta Paixão
FeriadosMoveis(1) = DateAdd("d", -47, dPascoa) 'Carnaval
FeriadosMoveis(2) = DateAdd("d", 60, dPascoa) 'Corpus Christi
Select Case dDataX
Case FeriadosFixos(0), FeriadosFixos(1), FeriadosFixos(2), FeriadosFixos(3), FeriadosFixos(4), FeriadosFixos(5), FeriadosFixos(6), FeriadosFixos(7), FeriadosFixos(8), FeriadosFixos(9)
VerificaSeFeriado = True
Case FeriadosMoveis(0), FeriadosMoveis(1), FeriadosMoveis(2)
VerificaSeFeriado = True
Case Else
VerificaSeFeriado = False
End Select
End Function
Private Function CalculaPascoa(iAno As Integer) As Date
Dim A As Integer
Dim B As Integer
Dim c As Integer
Dim D As Integer
Dim E As Integer
Dim F As Integer
Dim G As Integer
Dim H As Integer
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim L As Integer
Dim M As Integer
Dim N As Integer
Dim P As Integer
Dim Q As Integer
Dim R As Integer
Dim S As Integer
A = iAno \ 100 'o inteiro de (Ano ÷ 100)
B = iAno Mod 19 'o resto de (Ano ÷ 19)
c = (A - 17) \ 25 'o inteiro de [(A - 17) ÷ 25]
D = A \ 4 'o inteiro de (A ÷ 4)
E = (A - c) \ 3 'o inteiro de [(A - C) ÷ 3]
F = (A - D - E + (19 * B) + 15) Mod 30 'o resto de {[A - D - E + (19xB) + 15] ÷ 30}
G = F \ 28 'o inteiro de (F ÷ 28)
H = 29 \ (F + 1) 'o inteiro de [29 ÷ (F + 1)]
I = (21 - B) \ 11 'o inteiro de [(21 - B) ÷ 11]
J = G * H * I
K = F - (G * (1 - J))
L = iAno \ 4 'o inteiro de (Ano ÷ 4)
M = (iAno + L + K + 2 - A + D) Mod 7 'o resto de [(Ano + L + K + 2 - A + D) ÷ 7]
N = K - M
P = (N + 40) \ 44 'o inteiro de [(N + 40) ÷ 44]
Q = 3 + P
R = Q \ 4 'o inteiro de (Q ÷ 4)
S = N + 28 - (31 * R)
CalculaPascoa = CDate(S & "/" & Q & "/" & iAno)
End Function]