Piet Bom
Verenigingslid
- Lid geworden
- 13 nov 2010
- Berichten
- 786
Voor mijn project: "Planning in Excel" ben ik op zoek naar een VBA-function die de Einddatum en tijd berekend.
Uitgaande van een Startdatum+Tijd, de doorlooptijd en het werktijdenschema.
Eerder heb ik al een andere VBA-function bekomen via dit forum van Sylvester Ponte en toen ging het om het berekenen van de effectieve werktijd tussen 2 datums ook volgens een werktijdenschema.
Zijn code is heel compact en werkt snel.
https://www.helpmij.nl/forum/showthread.php/941592-tijd-berekenen-op-basis-van-huidige-tijd-dag-van-de-week
Naar zijn code kijkend, dacht ik dat het niet moeilijk moest zijn om zo'n UDF te maken, maar mijn code wordt maar langer en langer en hij werkt nog niet helemaal goed.
Graag jullie hulp om een duwtje in de goede richting te krijgen.
Uitgaande van een Startdatum+Tijd, de doorlooptijd en het werktijdenschema.
Eerder heb ik al een andere VBA-function bekomen via dit forum van Sylvester Ponte en toen ging het om het berekenen van de effectieve werktijd tussen 2 datums ook volgens een werktijdenschema.
Zijn code is heel compact en werkt snel.
Code:
Function testTijd2(Van As Date, Tot As Date, Tabel As Range) As Date
Dim Kolom, Rij, D, Van2 As Date, Tot2 As Date
D = Van: GoSub bereken_dag 'eerste dag
If int(van)<>int(tot) then D = Tot: GoSub bereken_dag 'laatste dag
For D = Int(Van) + 1 To Int(Tot) - 1 'de hele tussen dagen direct uit tabel halen
Kolom = DatePart("w", D, vbMonday)
testTijd2 = testTijd2 + Tabel(0, Kolom) 'hier staat in het voorbeeldbestand de totale dag_tijd
Next
Exit Function
bereken_dag:
With WorksheetFunction
Kolom = DatePart("w", D, vbMonday)
For Rij = 1 To Tabel.Rows.Count Step 2
Van2 = Tabel(Rij, Kolom) + Int(D)
Tot2 = Tabel(Rij + 1, Kolom) + Int(D)
testTijd2 = testTijd2 + .Max(0, .Min(Tot, Tot2) - .Max(Van, Van2))
Next
End With
Return
End Function
Naar zijn code kijkend, dacht ik dat het niet moeilijk moest zijn om zo'n UDF te maken, maar mijn code wordt maar langer en langer en hij werkt nog niet helemaal goed.
Graag jullie hulp om een duwtje in de goede richting te krijgen.