Datoproblem med Now, når værdien overføres til en funktion
Er der mon en ekspert der kan løse denne knude for mig. Jeg har et problem med et funktions kald, hvor NOW giver en forkert serial værdi.dato i dag 26092020 har en serial værdi 44100, men når den overføres til funktionen, så er værdien lngdate = 44101. hvad er årsagen til det?
funktionen returnere true / false afhængig af om det er: hverdag, weekend eller helligdag.
Sub test()
not_wortking_day = IsHoliday(now, 1, 1)
End Sub
Function IsHoliday(LngDate As Long, InclSaturdays As Boolean, InclSundays As Boolean) As Boolean
' (optionally included Saturdays/Sundays - boolsk værdi derfor 0 eller 1 )
' benytter funksjonen EasterSunday
Dim InputYear As Integer, ES As Long, OK As Boolean
If LngDate <= 0 Then LngDate = Date
InputYear = Year(LngDate)
ES = EasterSunday(InputYear)
OK = True
Select Case LngDate
Case DateSerial(InputYear, 1, 1) ' 1. Nyttårsdag
'Case ES - 4 ' Onsdag før påske
Case ES - 3 ' Skjærtorsdag
Case ES - 2 ' Langfredag
Case ES ' 1. Påskedag
Case ES + 1 ' 2. Påskedag
Case DateSerial(InputYear, 5, 1) ' 1. mai
Case DateSerial(InputYear, 5, 17) ' 17. mai
Case ES + 39 ' Kristi Himmelfartsdag
'Case ES + 48 ' Pinseaften
Case ES + 49 ' 1. Pinsedag
Case ES + 50 ' 2. Pinsedag
'Case DateSerial(InputYear, 12, 24) ' Julaften
Case DateSerial(InputYear, 12, 25) ' 1. Juledag
Case DateSerial(InputYear, 12, 26) ' 2. Juledag
'Case DateSerial(InputYear, 12, 31) ' Nytårsaften
Case Else ' tjek på lørdag / søndag
OK = False
If InclSaturdays Then
If Weekday(LngDate, vbMonday) = 6 Then
OK = True
End If
End If
If InclSundays Then
If Weekday(LngDate, vbMonday) = 7 Then
OK = True
End If
End If
End Select
IsHoliday = OK
End Function
Function EasterSunday(InputYear As Integer) As Long
' Returns the date for Easter Sunday, does not depend on Excel
Dim d As Integer
d = (((255 - 11 * (InputYear Mod 19)) - 21) Mod 30) + 21
EasterSunday = DateSerial(InputYear, 3, 1) + d + (d > 48) + 6 - ((InputYear + InputYear \ 4 + d + (d > 48) + 1) Mod 7)
End Function