• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Functie om aantal uren te berekenen tussen twee werktijden van bepaalde perioden

  • Onderwerp starter Onderwerp starter NuMan
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

NuMan

Gebruiker
Lid geworden
8 jan 2005
Berichten
131
Hallo
Graag wil ik een functie schrijven om aantaal uren van werktijden tussen bepaalde uren te berekenen. Met de formules heb ik het probleem tijdelijk opgelost. Ik vind combinatie van mijn formules met andere formules heel erg onoverzichtelijk. Ik heb zelf nog geen ervaring met functies te schrijven. Wie of wie kan mij hiermee helpen?
Alvast bedankt voor meedenken.
 

Bijlagen

Ik heb onderstaande functie geschreven. Dat is mijn eerste functie in Excel.
Volgens mij kan nog korter en beter.
Positieve en/of negatieve op- en aanmerkingen zijn welkom.
Alvast bedankt.

Code:
Function uob(begin As Date, einde As Date, ort_begin As Date, ort_einde As Date) As Date

If begin > ort_einde Or ort_einde <= begin Then 'ok
uob = "0:00"
Else

If begin <= ort_begin And einde >= ort_einde Then 'ok
uob = ort_einde - ort_begin
Else

If begin >= ort_begin And einde <= ort_einde Then 'ok
uob = einde - begin
Else

If begin >= ort_begin And ort_begin <= ort_einde And einde >= ort_einde Then 'OK
uob = ort_einde - begin
Else

If begin <= ort_begin And einde <= ort_einde And einde >= ort_begin Then 'OK
uob = einde - ort_begin
Else

uob = "0:00"
End If
End If
End If
End If
End If
End Function
 

Bijlagen

Laatst bewerkt:
Hoe kan ik nog zorgen dat bij ontbrekende gegevens geen berekening wordt uitgevoerd.
Kortom alleen berekenen als alle 4 (begin, einde,, ort_begin en ort_einde) ingevoerd zijn.
Bij lege cellen wordt ook herkend als “0:00:00”.
Heeft iemand hiervoor een oplossing. Ik kom zelf nog niet uit.
Alvast bedankt.
 
Laatst bewerkt:
is gelukt ....
final versie
Code:
Function uob(begin As String, einde As String, ort_begin As String, ort_einde As String) As String
Dim uobDate As Date
If Len(begin) <> 0 And Len(einde) <> 0 And Len(ort_begin) <> 0 And Len(ort_einde) <> 0 Then
Else
uob = ""
Exit Function
End If
If ((begin <= ort_begin) And (einde <= ort_begin)) Or ((begin >= ort_einde) And (einde >= ort_einde)) Then
uob = ""
ElseIf ((begin >= ort_begin) And (begin < ort_einde)) And ((einde <= ort_einde) And (einde > ort_begin)) Then
uob = CDate(einde - begin)
ElseIf (begin <= ort_begin) And (einde >= ort_einde) Then
uob = CDate(ort_einde - ort_begin)
ElseIf (begin <= ort_begin) And (ort_einde >= einde) Then
uob = CDate(einde - ort_begin)
ElseIf (begin >= ort_begin) And (einde >= ort_einde) Then
uob = CDate(ort_einde - begin)
    Else
    uob = "#uobfout"
    End If
End Function
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan