15. september 2006 - 00:30Der er
3 kommentarer og 1 løsning
DateAdd - uden weekend
Jeg har flg funktion, som jeg kalder med eksempelvis dags dato og 10 Public Function WorkingDays(ByVal dDate As Date, ByVal lInterval As Long) As Date Dim x As Long ' Count of Working Days Dim y As Long ' Count of actual Days Dim dNewDate As Date ' The date being checked Do Until x = lInterval dNewDate = DateAdd("w", y - 1, dDate) If Not Weekday(dNewDate) = vbSunday And Not Weekday(dNewDate) = vbSaturday Then x = x - 1 End If y = y + 1 Loop WorkingDays = DateAdd("w", y, dDate) End Function
Den finder datoen (med eksemplet dagsdato og 10) på 10'ende dag fremad og springer over lørdag og søndag. Hvordan får jeg den lige til at gå tilbage - Den fejler hvis jeg sætter -10 istedet...
Public Function WorkingDays(ByVal dDate As Date, ByVal lInterval As Long) As Date Dim x As Long ' Count of Working Days ''' Dim y As Long ' Count of Actual Days Dim dNewDate As Date ' The date being checked
Dim dayStep As Integer If lInterval >= 0 Then dayStep = 1 Else dayStep = -1 End If
dNewDate = dDate Do Until x = lInterval dNewDate = DateAdd("w", dayStep, dNewDate) If Not Weekday(dNewDate) = vbSunday And Not Weekday(dNewDate) = vbSaturday Then x = x + dayStep End If Loop WorkingDays = dNewDate End Function
' Beregn evt. nødvendig korrektion for weekenden... wd = Weekday(beregnetDato, vbSaturday) If wd > 2 Then corrDays = 0 ElseIf Arbejdsdage > 0 Then corrDays = 3 - wd Else corrDays = -wd End If
'Korriger evt. for weekend... If corrDays <> 0 Then beregnetDato = DateAdd("d", corrDays, beregnetDato) End If
'Returnere den beregnede dato... AddArbejdsdage = beregnetDato
End Function
PS: Jeg skal ikke have point, da nielle jo kom først med en funktion der virker. Ham bør du derimod straks belønne med de udsatte 60 point. Det er virkelig kontraproduktivt (= du kan få resten af brugerne på nakken og få svært ved at få hjælp næste gang), ikke at give de lovede point til dem som laver arbejdet, og kommer med en løsning på det stillede problem.
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.