Verschil in tijd berekenen

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

Neuz

Gebruiker
Lid geworden
21 aug 2012
Berichten
147
Hey allemaal,

Ik ben bezig met een programmatje waarin de diensttijd wordt berekend.
De diensttijd moet worden berekend in een userform.

Ik gebruik hiervoor de volgende code:
Code:
Private Sub TxtBegin_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Me.TxtBegin.Value <> "" And Me.TxtEind.Value <> "" And Me.ComPauze.Value <> "" Then
        If Me.TxtEind.Value > Me.TxtBegin.Value Then
            Me.TxtTijd = CDate(Me.TxtEind) - CDate(Me.TxtBegin) - CDate(Me.TxtPauzeTijd)
            Me.TxtTijd.Value = Format(TxtTijd, "hh:mm")
        ElseIf Me.TxtEind.Value < Me.TxtBegin.Value Then
            Me.TxtTijd = CDate(Me.TxtBegin) - CDate(Me.TxtEind) - CDate(Me.TxtPauzeTijd)
            Me.TxtTijd.Value = Format(TxtTijd, "hh:mm")
        End If
    End If
End Sub

Deze code geeft de juiste diensttijd (TxtTijd) zolang de einddtijd (TxtEind) groter is dan de begintijd (TxtBegin).
Indien dit andersom in geeft de berekening wel een waarde maar niet de waarde die ik wil hebben.

Voorbeeld 1:
TxtBegin = 07:30
TxtEind = 17:00
TxtPauzeTijd = 00:30

17:00 - 07:00 - 00:30 = 09:00

Voorbeeld 2:
TxtBegin = 21:45
TxtEind = 07:00
TxtPauzeTijd = 00:00

21:45 - 07:00 - 00:00 = 14:45

Voorbeeld 1 geeft precies wat ik wil. Ik werk van 07:30 uur tot 17:00 uur met 00:30 uur pauze. Ik ben dus 09:00 uur aanwezig op
de werkvloer.

Voorbeeld 2 geeft niet wat ik wil zien. Ik wil namelijk zijn dat de dienst 09:15 uur duurt.

Kan iemand mij helpen om tot een oplossing te komen.

Alvast bedankt.

Groet Neuz
 
Je zult 24 uur bij de eindtijd moeten optellen om de berekening weer correct te krijgen.
Code:
    If TimeValue(Me.txtBegin) <> 0 And TimeValue(Me.TxtEind) <> 0 Then
        If TimeValue(Me.TxtEind) > TimeValue(Me.txtBegin) Then
            Me.TxtTijd = TimeValue(Me.TxtEind) - (TimeValue(Me.TxtPauzeTijd) + TimeValue(Me.TxtPauzeTijd))
            Me.TxtTijd.Value = Format(TxtTijd, "hh:mm")
        ElseIf TimeValue(Me.TxtEind) < TimeValue(Me.txtBegin) Then
            Me.TxtTijd = TimeValue(Me.TxtEind) + 1 - (TimeValue(Me.txtBegin) + TimeValue(Me.TxtPauzeTijd))
            Me.TxtTijd.Value = Format(TxtTijd, "hh:mm")
        End If
    End If
 
Laatst bewerkt:
Beste OctaFish,

Dank je wel voor de snelle reactie. Dit was inderdaad de oplossing.

Groet Neuz
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan