Funktion der returnerer værdi efter dato
Hej Eksperter.Jeg har et par funktioner, jeg bruger i en kalender, de viser om dagen er en helligdag.
Jeg har fundet funktionerne på www.erlandsendata.no og rettet dem til så de viser danske helligdage/nationaldage.
Men nu er jeg blevet mere ambitiøs.
Jeg søger en funktion, der kan returnere helligdagens navn, i øjeblikket bruger jeg funktionerne sammen med en hvis-sætning:
=HVIS(Helligdag(B6;FALSK;FALSK)=SAND;"Helligdag";HVIS(D6<>"";D6;""))
B6 = dato, D6 = Andet fravær valgt fra en liste.
Jeg ved ikke om det hjælper, men her kommer funktionerne:
Function Påskedag(InputYear As Integer) As Long ' Returnerer datoen for Påskedag
Dim d As Integer
d = (((255 - 11 * (InputYear Mod 19)) - 21) Mod 30) + 21
Påskedag = DateSerial(InputYear, 3, 1) + d + (d > 48) + 6 - _
((InputYear + InputYear \ 4 + d + (d > 48) + 1) Mod 7)
End Function
Function Helligdag(lngdate As Long, InclSaturdays As Boolean, _
InclSundays As Boolean) As Boolean
' Returnerer Sand hvis lngDate er en Dansk helligdag/nationaldag
' (valgfri inkludering af lørdag/søndag)
' bruger funktionen Påskedag
Dim InputYear As Integer, PD As Long, OK As Boolean
If lngdate <= 0 Then lngdate = Date
InputYear = Year(lngdate)
PD = Påskedag(InputYear)
OK = True
Select Case lngdate ' Tester nedenstående påstande mod datoen
Case DateSerial(InputYear, 1, 1) ' Nytårsdag
Case PD - 3 ' Skærtorsdag
Case PD - 2 ' Langfredag
Case PD ' Påskedag
Case PD + 1 ' 2. Påskedag
Case DateSerial(InputYear, 6, 5) ' Grundlovsdag
Case PD + 26 ' Store Bededag
Case PD + 39 ' Kristi Himmelfartsdag
Case PD + 49 ' Pinsedag
Case PD + 50 ' 2. Pinsedag
Case DateSerial(InputYear, 12, 24) ' Julaftensdag
Case DateSerial(InputYear, 12, 25) ' 1. Juledag
Case DateSerial(InputYear, 12, 26) ' 2. Juledag
Case DateSerial(InputYear, 12, 31) ' Nytårsaftensdag
Case Else
OK = False
If InclSaturdays Then ' Tester lørdage, hvis de skal medtages
If WeekDay(lngdate, vbMonday) = 6 Then
OK = True
End If
End If
If InclSundays Then ' Tester søndage, hvis de skal medtages
If WeekDay(lngdate, vbMonday) = 7 Then
OK = True
End If
End If
End Select
Helligdag = OK
End Function
Kan det lade sig gøre, eller er jeg for ambitiøs?
