Jeg har denne VBA-kode her, som jeg har fået andet sted fra, for nogle år siden.
Nu efterspørge konen, om jeg ikke kan lave så hun kan se, hvornår 1. - 4. advent er.
Har prøvet, men VBA er godt nok ikke min stærke side.
1. advent falder altid imellem den 27. november og 3. december, men hvordan regner man det nu og hvordan kan jeg få det passet ind i den VBA-kode jeg har ?
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, InclSaturdays As Boolean, _
InclSundays As Boolean) As String
' Returnerer Sand hvis lngDate er en Dansk HelligdagsNavn/nationaldag
' (valgfri inkludering af lørdag/søndag)
' 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
'
' Helligedage og andre mærkedage på faste datoer
'
Case DateSerial(InputYear, 1, 1): HelligdagsNavn = "Nytårsdag"
Case DateSerial(InputYear, 1, 6): HelligdagsNavn = "Hellig tre Konger"
Case DateSerial(InputYear, 2, 14): HelligdagsNavn = "Valentinsdag"
Case DateSerial(InputYear, 6, 5): HelligdagsNavn = "Grundlovsdag"
Case DateSerial(InputYear, 6, 23): HelligdagsNavn = "Sankt Hansaften"
Case DateSerial(InputYear, 6, 24): HelligdagsNavn = "Sankt Hansdag"
Case DateSerial(InputYear, 10, 31): HelligdagsNavn = "Halloween"
Case DateSerial(InputYear, 11, 10): HelligdagsNavn = "Mortensaften"
Case DateSerial(InputYear, 11, 11): HelligdagsNavn = "Mortensdag"
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"
'
' Helligedage og andre mærkedage på beregnet datoer
'
Case PD - 49: HelligdagsNavn = "Fastelavn"
Case PD - 7: HelligdagsNavn = "Palmesøndag"
Case PD - 3: HelligdagsNavn = "Skærtorsdag"
Case PD - 2: HelligdagsNavn = "Langfredag"
'
' minus dage efter Påskedag
'
Case PD: HelligdagsNavn = "Påskedag"
'
' plus dage efter Påskedag
'
Case PD + 1: HelligdagsNavn = "2. Påskedag"
Case PD + 26: HelligdagsNavn = "Store bededag"
Case PD + 39: HelligdagsNavn = "Kristi Himmelfartsdag"
Case PD + 49: HelligdagsNavn = "Pinsedag"
Case PD + 50: HelligdagsNavn = "2. Pinsedag"
Case Else
End Select
OK = False
If InclSaturdays Then ' Tester lørdage, hvis de skal medtages
If Weekday(lngdate, vbMonday) = 6 Then
HelligdagsNavn = HelligdagsNavn & " Lørdag"
End If
End If
If InclSundays Then ' Tester søndage, hvis de skal medtages
If Weekday(lngdate, vbMonday) = 7 Then
HelligdagsNavn = HelligdagsNavn & " Søndag"
End If
End If
If lngdate = 7 * Int(DateSerial(Year(lngdate), 5, 13) / 7) + 1 Then HelligdagsNavn = "Mors Dag"
If lngdate = 7 * Int(DateSerial(Year(lngdate), 4, 13) / 7) + 1 - 14 Then HelligdagsNavn = "Sommertid Begynder"
If lngdate = 7 * Int(DateSerial(Year(lngdate), 11, 13) / 7) + 1 - 14 Then HelligdagsNavn = "Sommertid Slutter"
End Function