Print side | Luk vindue

Advent - kan man udregne det

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=4388
Udskrevet den: 28.Apr.2024 kl. 15:14


Emne: Advent - kan man udregne det
Besked fra: Sejerkilde
Emne: Advent - kan man udregne det
Posteringsdato: 29.Okt.2020 kl. 13:48
Hejsa

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




-------------
m.v.h.

Sejerkilde

Anvender Excel 365 DK




Svar:
Besked fra: Hans K.
Posteringsdato: 30.Okt.2020 kl. 11:17
Her er formler der kan klare det.

Hvis du af en eller anden grund absolut vil have det ind i din brugerdefinerede funktion må du selv ordne det (eller få en anden til det).

uploads/2435/Advent.xlsx" rel="nofollow - uploads/2435/Advent.xlsx


Besked fra: Sejerkilde
Posteringsdato: 30.Okt.2020 kl. 15:00
Jeg prøve og kigge på det og ser om jeg kan få det til at virker, som jeg gerne vil have det 

-------------
m.v.h.

Sejerkilde

Anvender Excel 365 DK



Besked fra: Bjarnehansen
Posteringsdato: 30.Okt.2020 kl. 15:40
uploads/397/advent_0.01.02.xlsm" rel="nofollow - uploads/397/advent_0.01.02.xlsm
her er den indbygget



-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK


Besked fra: Sejerkilde
Posteringsdato: 30.Okt.2020 kl. 17:51
Hej Bjarne

Mange tak Smile

Så skal jeg nok får det rettet til, så det passer, ind i mit ark Wink


-------------
m.v.h.

Sejerkilde

Anvender Excel 365 DK




Print side | Luk vindue