Moin,
im Date-Format ist das so'n Problem mit negativen Zeiten.
Deshalb mal folgenden Code:
Private Function LeadingZero(lngZahl As Long) As String
  Dim Result As String
  If (Abs(lngZahl) > 10) Then
    Result = Abs(lngZahl) ' Zahl ist zweistellig
  Else
    Result = "0" & Abs(lngZahl) ' Zahl ist einstellig
  End If
  If (lngZahl     Result = "-" & Result ' Zahl ist negativ
  End If
  LeadingZero = Result
End Function
Private Function Arbeitszeit(ByVal datKommen As Date, ByVal datGehen As Date) As String
  Dim lngKommen As Long ' Sekunden von Mitternacht bis zum Kommen
  Dim lngGehen As Long ' Sekunden von Mitternacht bis zum Gehen
  Dim lngSollZeit As Long ' Sekunden, die gearbeitet werden müssen
  Dim lngPausen As Long ' Sekunden, die die Länge der Pausen entsprechen
  Dim lngGearbeitet As Long ' Sekunden vom Kommen bis Gehen mit Pausen
  Dim lngMitternach As Long ' Sekunden um 24Uhr
  Dim strResult As String ' Gearbeitete Zeit
  ' Die Zeiten in Sekunden umrechnen
  lngKommen = Second(datKommen) + Minute(datKommen) * 60 + Hour(datKommen) * 3600
  lngGehen = Second(datGehen) + Minute(datGehen) * 60 + Hour(datGehen) * 3600
  ' Sollzeit beträt sieben Stunden, also 07:00,00
  lngSollZeit = 7 * 3600 ' Achtung!! bei mehr als neun Stunden muß hier von Hand
  ' ausgerechnet werden! (Scheiß MicroSoft und VB)
  ' Pausenzeit beträgt 45 Minuten also 00:45,00
  lngPausen = 45 * 60
  ' Mitternach berechnen
  lngMitternach = 86400
  ' Die Brutto-Zeit berechnen
  If (lngKommen > lngGehen) Then
    ' Über Mitternacht hinaus
    lngGearbeitet = ((lngMitternach - lngKommen) + lngGehen)
  Else
    ' Am selben Tag
    lngGearbeitet = (lngGehen - lngKommen)
  End If
  ' Pausen und SollZeit abziehen
  lngGearbeitet = lngGearbeitet - (lngSollZeit + lngPausen)
  ' Zeit in einen String umwandeln
  strResult = LeadingZero(lngGearbeitet \ 3600) & ":" & LeadingZero(Abs(lngGearbeitet Mod 3600) \ 60) & ":" & LeadingZero(Abs((lngGearbeitet Mod 3600) Mod 60))
  ' Zeit zurückgeben
  Arbeitszeit = strResult
End Function
Hoffe, Dir damit geholfen zu haben.