Avatar billede pouls Mester
11. november 2024 - 14:55 Der er 9 kommentarer

Udregning af antal måneder og år

Jeg har en formular med et felt hvor jeg gerne vil vide hvor mange år og måneder der er fra købs datoen jeg har brugt denne formel men det bliver ikke rigtig.
=(Date()-[Køds dato])/365
håber at en kan hjælpe
Avatar billede Gustav Ekspert
11. november 2024 - 15:19 #1
Det er lidt tricky på grund af de skiftende antal dage per måned og skudår. Men denne gør det rigtigt:
' Returns the difference in full months from DateOfBirth to current date,
' optionally to another date.
' Returns zero if AnotherDate is earlier than DateOfBirth.
'
' Calculates correctly for:
'  leap Months
'  dates of 29. February
'  date/time values with embedded time values
'  any date/time value of data type Date
'
' DateAdd() is, when adding a count of months to dates of 31th (29th),
' used for check for month end as it correctly returns the 30th (28th)
' when the resulting month has 30 or less days.
'
' 2015-11-24. Gustav Brock, Cactus Data ApS, CPH.
'
Public Function AgeMonths( _
    ByVal DateOfBirth As Date, _
    Optional ByVal AnotherDate As Variant) _
    As Long
   
    Dim ThisDate    As Date
    Dim Months      As Long
     
'    If IsDateExt(AnotherDate) Then
    If IsDate(AnotherDate) Then
        ThisDate = CDate(AnotherDate)
    Else
        ThisDate = Date
    End If
   
    ' Find difference in calendar Months.
    Months = DateDiff("m", DateOfBirth, ThisDate)
    If Months > 0 Then
        ' Decrease by 1 if current date is earlier than birthday of current year
        ' using DateDiff to ignore a time portion of DateOfBirth.
        If DateDiff("d", ThisDate, DateAdd("m", Months, DateOfBirth)) > 0 Then
            Months = Months - 1
        End If
    ElseIf Months < 0 Then
        Months = 0
    End If
   
    AgeMonths = Months
 
End Function
År kan du så regne ud ved at dividere med 12 og runde ned. Resten vil være måneder:
TotalMåneder = AgeMonths
HeleÅr = TotalMåneder \ 12
RestMåneder = TotalMåneder Mod 12
Alle mine datofunktioner:
https://github.com/GustavBrock/VBA.Date
Avatar billede pouls Mester
11. november 2024 - 17:17 #2
Mange tak. Det var lidt mere tricky end jeg havde regnet med. Men jeg tror ikke at det er muligt at bruge den formel da jeg bruger feltet i en formular  [Køds dato] og det skifter for hvert indtastet indkøb. Det ser ud til at denne formel er bygget på at
(' 2015-11-24. Gustav Brock, Cactus Data ApS, CPH.) var født 2015-11-24 . Hvis jeg forstår denne formel rigtig.
Avatar billede Gustav Ekspert
11. november 2024 - 17:40 #3
Den dato er bare datoen for sidste rettelse af funktionen.
Du bruger KøbsDato som værdi for parameteren DateOfBirth.
Avatar billede pouls Mester
11. november 2024 - 18:07 #4
Måske indtaster jeg det forkert. Men hvis jeg indtaster det i Kontrolelementkilde kommer fejlen ugyldig syntaks skal det indsættes et andet sted.
Avatar billede Gustav Ekspert
11. november 2024 - 19:17 #5
Det skal nok blot være (hvis det ellers er kød, du har med at gøre?):
=AgeMonths([Køds dato])
eller (for antal år med decimaler):
=AgeMonths([Køds dato])/12
Avatar billede pouls Mester
11. november 2024 - 22:38 #6
En lille dum stavefejl det skulle være [købs dato] men den giver samme fejl [ugyldig syntaks)
Tak for hjælpen men det bliver nok for svært for mig
Avatar billede Gustav Ekspert
Skrevet i går kl. 08:41 #7
Syntaksen er god nok, så det lyder som om, du ikke har funktionen på plads i et modul.
Hvis ikke, så åbn et nyt modul, kopiér funktionen ovenfor, indsæt den i modulet.
Gå til menu Debug og vælg Compile. Gem modulet.
Avatar billede pouls Mester
Skrevet i går kl. 11:28 #8
Tak for din hjælp Gustav Moduler har jeg ikke arbejdet så meget med så her må jeg nok give op min egen udregning passer næsten så den må jeg nok leve med.
Avatar billede Gustav Ekspert
Skrevet i går kl. 11:42 #9
Det er jo ellers ikke meget, der skal til: Kopiér, indsæt og gem.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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