Avatar billede folj Forsker
18. maj 2018 - 11:17 Der er 3 kommentarer og
1 løsning

ecxl-vba: Noget galt med min if-sætning...


    If (Month(InDate) = 3) Then ' hvis måned = marts
      If (Day(InDate) > 24) Then ' hvis dato > 24
        If Weekday(InDate = 7, vbMonday) Then ' hvis ugedag er søndag
          OutText = "Sommertid Start"
          PublicHoliday = OutText
        End If
      End If
    End If
    If (Month(InDate) = 10) Then ' hvis måned = oktober
      If (Day(InDate) > 24) Then ' hvis dato > 24
        If Weekday(InDate = 7, vbMonday) Then ' hvis ugedag er søndag
          OutText = "Sommertid Slut"
          PublicHoliday = OutText
        End If
      End If
    End If


Jeg har en function der fodres med dagens dato, og så returnerer den en tekst hvis det er en skæv helligdag eller sommertid start/slut.

Eftersom min if-sætning returnerer  teksten "Sommertid Start" og "Sommertid Slut" i hele den sidste uge i marts og oktober, så må der være noget galt i mine if-sætninger - jeg kan bre ikke lige spotte hvad.
Avatar billede finb Ekspert
18. maj 2018 - 11:22 #1
If (Month(InDate) = 3)      and (Day(InDate) > 24) and Weekday(InDate = 7, vbMonday) Then ' hvis ugedag er søndag
          OutText = "Sommertid Start"
          PublicHoliday = OutText
        End If
      End If
    End If

    If (Month(InDate) = 10) and (Day(InDate) > 24) and  Weekday(InDate = 7, vbMonday) Then ' hvis ugedag er søndag
          OutText = "Sommertid Slut"
          PublicHoliday = OutText
        End If
      End If
    End If
Avatar billede folj Forsker
18. maj 2018 - 12:20 #2
@finb:
Jeg ser at du har omskrevet de 3 if-sætninger til én samlet if-sætning med AND imelem. der skal kun bruge én end if.
men det gør jo ingen forskel.

Det er jo de samme betingelser og funktionene returnerer stadig hhv. "Sommertid Start" og "Sommertid Slut" i hele den sidste uge i marts og oktober.

det er som om den ikke registrerer at det kun er om søndagen den skal returnere teksten...
Avatar billede folj Forsker
18. maj 2018 - 12:28 #3
Det var ifsætningen
If Weekday(InDate = 7, vbMonday) Then ' hvis ugedag er søndag
den var gal med...

den blev rettet til:
If Weekday(InDate, vbMonday) = 7 Then ' hvis ugedag er søndag
og nu returnerer den det kun på søndagen.
Avatar billede folj Forsker
18. maj 2018 - 12:34 #4
@finb

Jeg takker for dit engagement I mit spørgsmål.
Selvom det ikke udløste nogen credit for det rigtige svar, så var det med til at lede mig frem til at det var netop denne sætning den var gal med.
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

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