Her er den løsning som jeg selv er kommet frem til:
Private Sub Varighed_Enter()
Dim startDato As String Dim slutdato As String Dim TestDato As String
Dim varighedsres As Integer Dim dag1 As Integer Dim dag2 As Integer Dim PartofMonth As Integer Dim month As Integer Dim month2 As Integer Dim antaldage As Integer
måned = month 'Angivelse af måneden til første gennemkørelse af hver case Select Case måned Case 1, 3, 5, 7, 8, 10, 12 'Case hvor antalet af dage i en måned sættes til 31 antaldage = 31 dag1 = Val(Mid(startDato, 1, 2)) Case 4, 6, 9, 11 'Case hvor antalet af dage i en måned sættes til 30 antaldage = 30 dag1 = Val(Mid(startDato, 1, 2)) Case 2 'Case hvor der tages højde for skud år TestDato1 = "29-02-" & Val(Mid(startDato, 7, 4)) If IsDate(TestDato1) Then Skudår = True antaldage = 29 dag1 = Val(Mid(startDato, 1, 2)) Else Skudår = False antaldage = 28 dag1 = Val(Mid(startDato, 1, 2))
End If End Select
måned = month2 'Angivelse af månden til anden gennemkørelse af hver case for datoen slutdato Select Case måned Case 1, 3, 5, 7, 8, 10, 12 'Case hvor antalet af dage i en måned sættes til 31 antaldage = 31 dag2 = Val(Mid(slutdato, 1, 2)) Case 4, 6, 9, 11 'Case hvor antalet af dage i en måned sættes til 30 antaldage = 30 dag2 = Val(Mid(slutdato, 1, 2)) Case 2 'Case hvor der tages højde for skud år TestDato1 = "29-02-" & Val(Mid(slutdato, 7, 4)) If IsDate(TestDato1) Then Skudår = True antaldage = 29 dag2 = Val(Mid(slutdato, 1, 2)) Else Skudår = False antaldage = 28 dag2 = Val(Mid(slutdato, 1, 2)) End If End Select varighedsres = DateDiff(interval:="m", Date1:=CDate(startDato), Date2:=CDate(slutdato)) 'Udregning af antallet af måneder fra startdato til slutdatoen Forms!Opret_ophold!Varighed = varighedsres + (dag1 / antaldage) + (dag2 / antaldage) 'Angivelse af den samlede tid mellem de to måneder. End Sub
Nu ved jeg jo ikke, hvad det er du skal bruge det til, men giver det overhovedet nogen mening at skelne mellem om det måneder med 28, 29, 30 eller 31 dage?
For det første er forskellen i virkeligheden ikke ret stor, når man betragter resultatet som måneder med en decimal.
For det andet er det vel ikke rimeligt at sige at f.eks. to personer har brugt lige lang tid på et stykke arbejde, hvis den ene har brugt en måned i februar og den anden en måned i marts. Så vidt jeg lige kan se, så skal det i begge tilfælde give 1,0 måned med din funktion. Men i virkeligheden har den ene brugt 10 procent mere tid på det.
Synes godt om
Ny brugerNybegynder
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.