Avatar billede macho Praktikant
15. december 2005 - 01:08 Der er 1 kommentar og
1 løsning

Tilføje helligdagsnavn på kalender

Jeg bruger nedenstående kode til at definere lørdage, søndage samt helligdage. Kan jeg tilføje noget i koden, så jeg i min kalender også kan vise selve navnet på helligdagen i en anden celle, som så selvfølgelig henviser til den dato, hvor datoen figurerer?

***************

Function ErHelligdag(ByVal TestDato As Long, _
    Optional ByVal InclLørdage As Boolean = True, _
    Optional ByVal InclSøndage As Boolean = True) As Boolean
   
    Dim InputYear As Integer, PD As Long, OK As Boolean
    If TestDato <= 0 Then TestDato = Date
    InputYear = Year(TestDato)
    PD = Påskedag(InputYear)
    OK = True
    Select Case TestDato
        Case DateSerial(InputYear, 1, 1)  ' Nytårsdag
        Case PD - 7    ' Palmesøndag
        Case PD - 3    ' Skærtorsdag
        Case PD - 2    ' Langfredag
        Case PD        ' Påskedag
        Case PD + 1    ' 2. påskedag
        Case PD + 26    ' St. Bededag
        Case PD + 39    ' Kristi Himmelfartsdag
        Case PD + 49    ' Pinsedag
        Case PD + 50    ' 2. Pinsedag
        Case DateSerial(InputYear, 12, 25) ' Juledag
        Case DateSerial(InputYear, 12, 26) ' 2. Juledag
        Case DateSerial(InputYear, 12, 31) ' Nytårsaftensdag
        Case Else
            OK = False
            If InclLørdage Then
                If Weekday(TestDato, vbMonday) = 6 Then
                    OK = True
                End If
            End If
            If InclSøndage Then
                If Weekday(TestDato, vbMonday) = 7 Then
                    OK = True
                End If
            End If
    End Select
    ErHelligdag = OK
End Function

Function Påskedag(InputYear As Integer) As Long
    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
Avatar billede macho Praktikant
15. december 2005 - 03:10 #1
Har selv fundet løsningen ved at indsætte endnu en funktion: HelligDagsnavn

********

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 - 7: HelligdagsNavn = "Palmesøndag"
        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 = "St. Bededag"
        Case PD + 39: HelligdagsNavn = "Kr. 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 = "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
Avatar billede Dan Elgaard Ekspert
15. december 2005 - 07:12 #2
Prøv også evt. at kigge her, for en smart løsning på problemet:

http://www.excelgaard.dk/funktioner/helligdag/

mvh.,
Pistolprinsen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Rambøll Management Consulting

Senior Software Engineer

Capgemini Danmark A/S

AI/Data Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknologirådgiver inden for AI-området til Teknologiafdelingen

Politiets Efterretningstjeneste

IT-løsningsarkitekt i PET