Okay, maybe I have too much time on my hands too, but here it goes. I have create a class module to give the exact dates of the various holidays. Instance on the class module is set to PublicNotCreatable, so as we can create a reference to it and not only that, but spreadsheets can also refer to them via the function calling.
Each function is declared as public for 2 reasons as well:
1 - Spreadsheets can refer to them
2 - Can use the CallByName function in a standard module in VBA. Note though, CallByName function can only refer to methods and properties that's in a class module, thus why the functions are in a class module.
Here's the Class Module side of it:
Public Function ThanksGiving(Year As Integer) As Date
ThanksGiving = DateSerial(Year, 11, 25) - Weekday(DateSerial(Year, 11, 25), 2) + 4
End Function
Public Function DayAfterThanksGiving(Year As Integer) As Date
DayAfterThanksGiving = DateSerial(Year, 11, 25) - Weekday(DateSerial(Year, 11, 25), 2) + 5
End Function
Public Function Christmas(Year As Integer) As Date
Christmas = DateSerial(Year, 12, 25)
End Function
Public Function ChristmasEve(Year As Integer) As Date
ChristmasEve = DateSerial(Year, 12, 24)
End Function
Public Function NewYear(Year As Integer) As Date
NewYear = DateSerial(Year, 1, 1)
End Function
Public Function NewYearEve(Year As Integer) As Date
NewYearEve = DateSerial(Year, 12, 31)
End Function
Public Function Independence(Year As Integer) As Date
Independence = DateSerial(Year, 7, 4)
End Function
Public Function Labor(Year As Integer) As Date
Labor = DateSerial(Year, 9, 7) - Weekday(DateSerial(Year, 9, 7), 2) + 1
End Function
Public Function Memorial(Year As Integer) As Date
Memorial = DateSerial(Year, 5, 31) - Weekday(DateSerial(Year, 5, 31), 2) + 1
End Function
Public Function GoodFriday(Year As Integer) As Date
GoodFriday = 6 - Weekday(Eastrday(Year), 1) + Eastrday(Year)
End Function
Public Function HolyThursday(Year As Integer) As Date
HolyThursday = 5 - Weekday(Eastrday(Year), 1) + Eastrday(Year)
End Function
Public Function HolyWednesday(Year As Integer) As Date
HolyWednesday = 4 - Weekday(Eastrday(Year), 1) + Eastrday(Year)
End Function
Public Function HolyTuesday(Year As Integer) As Date
HolyTuesday = 3 - Weekday(Eastrday(Year), 1) + Eastrday(Year)
End Function
Public Function HolyMonday(Year As Integer) As Date
HolyMonday = 2 - Weekday(Eastrday(Year), 1) + Eastrday(Year)
End Function
Public Function PalmSunday(Year As Integer) As Date
PalmSunday = 1 - Weekday(Eastrday(Year), 1) + Eastrday(Year)
End Function
Public Function Eastrday(Year As Integer) As Date
Dim Century As Integer
Dim YearFactor As Integer
YearFactor = 11 * ((Year Mod 19) + 1)
Century = Int(Year / 100)
Eastrday = DateValue("3/" & 50 - (Int(Century / 4) + Int((8 * (Century + 11) / 25) - Century + YearFactor) Mod 30) & "/" & Year)
End Function
Public Function Easter(Year As Integer) As Date
Easter = 8 - Weekday(Eastrday(Year), 1) + Eastrday(Year)
End Function
Public Function AprilFools(Year As Integer) As Date
AprilFools = DateSerial(Year, 4, 1)
End Function
Public Function Veterans(Year As Integer) As Date
Veterans = DateSerial(Year, 11, 11)
End Function
Public Function MartinLutherKing(Year As Integer) As Date
MartinLutherKing = DateSerial(Year, 1, 21) - Weekday(DateSerial(Year, 1, 21), 2) + 1
End Function
Public Function President(Year As Integer) As Date
President = DateSerial(Year, 2, 21) - Weekday(DateSerial(Year, 2, 21), 2) + 1
End Function
Public Function Mother(Year As Integer) As Date
Mother = DateSerial(Year, 5, 8) - Weekday(DateSerial(Year, 5, 8), 2) + 7
End Function
Public Function Father(Year As Integer) As Date
Father = DateSerial(Year, 6, 15) - Weekday(DateSerial(Year, 6, 15), 2) + 7
End Function
Public Function Sweetest(Year As Integer) As Date
Sweetest = DateSerial(Year, 10, 16) - Weekday(DateSerial(Year, 10, 16), 2) + 6
End Function
Public Function Valentine(Year As Integer) As Date
Valentine = DateSerial(Year, 2, 14)
End Function
Public Function StPatrick(Year As Integer) As Date
StPatrick = DateSerial(Year, 3, 17)
End Function
Ronald R. Dodge, Jr.
Production Statistician
Master MOUS 2000