Hello oplossers,
Ik heb onderstaande Functie(betaalde feestdagen) geschreven. Mijn vraag: is die volgens de regels van de kunst geschreven en wat kan er nog beter om code te versnellen?
Heb de code getest en werkt in word, excel en acces.
Public Function BetaaldeFeestdag(Dag As Integer, Maand As Integer, Jaar As Integer) As String
Dim feestdagen(10) As Date
Dim benamingen(10) As String
Dim MijnDatum As Date
Dim mijnPaasdatum As Date
Dim I As Double
Dim J As Double
Dag = Dag
Maand = Maand
Jaar = Jaar
MijnDatum = DateSerial(Jaar, Maand, Dag)
mijnPaasdatum = MijnDatum
Call mijnPasen(mijnPaasdatum)
feestdagen(0) = DateSerial(Jaar, 1, 1) ' Nieuwjaarsdag
feestdagen(1) = DateSerial(Format(mijnPasen(mijnPaasdatum), "yyyy"), Format(mijnPasen(mijnPaasdatum) + 1, "mm"), Format(mijnPasen(mijnPaasdatum) + 1, "dd")) 'Paasmaandag var
feestdagen(2) = DateSerial(Jaar, 5, 1) 'Dag van de Arbeid
feestdagen(3) = DateSerial(Jaar, Format(mijnPasen(mijnPaasdatum) + 39, "mm"), Format(mijnPasen(mijnPaasdatum) + 39, "dd")) 'O.L.H Hemelvaart var
feestdagen(4) = DateSerial(Jaar, Format(mijnPasen(mijnPaasdatum) + 50, "mm"), Format(mijnPasen(mijnPaasdatum) + 50, "dd")) 'Pinkstermaandag var
feestdagen(5) = DateSerial(Jaar, 7, 11) 'Feest van de vlaamse gemeenschap
feestdagen(6) = DateSerial(Jaar, 7, 21) 'Nationale Feestdag
feestdagen(7) = DateSerial(Jaar, 8, 15) 'O.L.V Hemelvaart
feestdagen(8) = DateSerial(Jaar, 11, 1) 'Allerheiligen
feestdagen(9) = DateSerial(Jaar, 11, 11) 'Wapenstilstand
feestdagen(10) = DateSerial(Jaar, 12, 25) 'Kerstmis
benamingen(0) = "Nieuwjaarsdag*"
benamingen(1) = "Paasmaandag*"
benamingen(2) = "Dag van de arbeid*"
benamingen(3) = "O.L.H Hemelvaartsdag*"
benamingen(4) = "Pinkstermaandag*"
benamingen(5) = "Feest van de vlaamse gemeenschap"
benamingen(6) = "Nationale Feestdag*"
benamingen(7) = "O.L.V Hemelvaart*"
benamingen(8) = "Allerheiligen*"
benamingen(9) = "Wapenstilstand(W.O 1 '14/'18*)"
benamingen(10) = "Kerstmis*"
'for.....next
For I = MijnDatum To MijnDatum Step 1
mijnPaasdatum = mijnPasen(CDate(I))
For J = 0 To 10 Step 1
'If Format(CDate(I), "dd/mm") = feestdagen(J) Then
If I = feestdagen(J) Then
BetaaldeFeestdag = benamingen(J)
End If
Next J
Next I
End Function