11. februar 2005 - 14:52
Der er
2 kommentarer og
1 løsning
Lidt mere kalendersnak
I en tidligere debat, indgik der et vba-script til en kalender - venligst videregivet af kabbak...
Den virker jo fint, men jeg har et lille ekstra spørgsmål...
Jeg arbejder i en kursusvirksomhed, hvor kursister sagtens kan deltage i et forløb, som varer et halvt års tid. Derfor kan der forekomme helligdage fra to forskellige årstal. (F.eks. julen i 2004 og påsken i 2005). Er der en snedig måde at omskrive helligdags-delfunktionen, så den ikke trækker årstallet fra påskedags-delfunktionen, men tager årstallet direkte fra en indtastet dato og checker om det er en helligdag...???
(Jeg har også kommenteret den anden tråd. Da jeg ikke er så "eksperten-erfaren" og ikke ved, hvor mange der interesserer sig for ældre debatter, beklager jeg at jeg også opretter en ny debat her, hvis det ikke er helt OK...)
11. februar 2005 - 23:22
#1
hvis du har datoen i A1 kan du bruge denne funktion i B1
=HelligdagsNavn(A1)
du skal have disse funktioner i et modul
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 HelligdagsNavn(lngdate As Long) As String
' 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): HelligdagsNavn = "Nytårsdag"
Case PD - 3: HelligdagsNavn = "Skærtorsdag"
Case PD - 2: HelligdagsNavn = "Langfredag"
Case PD: HelligdagsNavn = "Påskedag"
Case PD + 1: HelligdagsNavn = "2. Påskedag"
Case DateSerial(InputYear, 6, 5): HelligdagsNavn = "Grundlovsdag"
Case PD + 26: HelligdagsNavn = "Store Bededag"
Case PD + 39: HelligdagsNavn = "Kristi Himmelfartsdag"
Case PD + 49: HelligdagsNavn = "Pinsedag"
Case PD + 50: HelligdagsNavn = "2. Pinsedag"
Case DateSerial(InputYear, 12, 24): HelligdagsNavn = "Julaftensdag"
Case DateSerial(InputYear, 12, 25): HelligdagsNavn = "1.Juledag"
Case DateSerial(InputYear, 12, 26): HelligdagsNavn = "2.Juledag"
Case DateSerial(InputYear, 12, 31): HelligdagsNavn = "Nytårsaftensdag"
Case Else
End Select
OK = False
End Function