Avatar billede barin998dk Nybegynder
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...)
Avatar billede kabbak Professor
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
Avatar billede barin998dk Nybegynder
14. februar 2005 - 11:01 #2
kabbak du er en rar og en klog mand... :-)
Send et svar, så sender jeg points'ene i din retning. :-)
Avatar billede kabbak Professor
14. februar 2005 - 12:00 #3
Tak for ros, ;-))
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