Avatar billede Morten Nybegynder
13. november 2003 - 11:15 Der er 9 kommentarer og
1 løsning

Nr på sidste dag i måned

Hej

Er der ikke en simpel måde at finde den sidste dag i en given måde (i VBA) altså Januar ville så give 31 - Juni 30 osv osv
Avatar billede jkrons Professor
13. november 2003 - 11:26 #1
Prøv denne:

Function SidsteDagIMaaned(dato)
dato = CDate(dato)
maaned = Month(dato)
    Select Case maaned
        Case Is = 1, 3, 5, 7, 8, 10, 12
            SidsteDagIMaaned = 31
        Case Is = 4, 6, 9, 11
            SidsteDagIMaaned = 30
        Case Is = 2
            If Year(Date) Mod 4 = 0 And Left(Year(Date), 2) Mod 4 <> 0 Then
                SidsteDagIMaaned = 29
            Else
                SidsteDagIMaaned = 30
            End If
    End Select

End Function

Har du datoen, du vil undersøge i A1, skriver du så fx i B1 =Sidstedagimaaned(a1) og får fx i dag svaret 30.
Avatar billede Morten Nybegynder
13. november 2003 - 11:28 #2
Jeps - nu har jeg godt nok det hele i VBA - men hvorfor jeg ikke lige tænkte på den der.. hmmm tak for hjælpen
Avatar billede jkrons Professor
13. november 2003 - 11:30 #3
Selv tak. Men der iøvrigt en fejl i den sidste case, den skal no se således ud, for at virke helt rigtig:

Case Is = 2
            If Year(Date) Mod 4 = 0 And Right(Year(Date), 2) = 0 And Left(Year(Date), 2) Mod 4 <> 0 Then
                SidsteDagIMaaned = 29
            Else
                SidsteDagIMaaned = 30
            End If

År 2000 var jo ikke skudår :-)
Avatar billede snowball Novice
13. november 2003 - 12:01 #4
jkrons: Du har da vist ikke kigget i en kalender dengang du lavede det script ;)

Normalt er der 28 dage i februar måned, og hvis det er skudår er der 29 dage ;)

Snowball
Avatar billede jkrons Professor
13. november 2003 - 12:24 #5
Ja ja. Der skulle selvfølgelig have stået 28 i sidste linje. :-(
Avatar billede jkrons Professor
13. november 2003 - 12:25 #6
Sådan går det, når man bruger cut'n paste og så glemmer at rette overalt.
Avatar billede bak Forsker
13. november 2003 - 13:26 #7
Hvis tillægsmodulet Analysis Toolpak er installeret burde SLUT.PÅ.MÅNED (EOMONTH) kunne give det korrekte svar.
A1 = 01-02-2003
=SLUT.PÅ.MÅNED(A1; 0)  giver 28-02-2003
=DAG(SLUT.PÅ.MÅNED(A1; 0)) giver 28
Avatar billede bak Forsker
13. november 2003 - 13:31 #8
sorry, så ikke lige det var til VBA
Avatar billede bak Forsker
13. november 2003 - 13:41 #9
Hvis analysis toolpak til vba er installeret og referencen til den er sat:

Function LastDay(dato)
LastDay = Day(eomonth(CDate(dato), 0))
End Function
Avatar billede ctc-3d Nybegynder
15. november 2003 - 13:59 #10
år 2000 var faktisk et skudår
Reglen er: Hvert 4. år er et skudår medmindre 100 går op i det. Dog hvis 400 går op i det der altid et skud år

altså 2000 var et skudår (også i følge windows kalender)
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