You can use this function:
Public Function FormatHourMinuteSecondDiff( _
ByVal datTimeStart As Date, _
ByVal datTimeEnd As Date, _
Optional ByVal strSeparator As String = ":") _
As String
' Returns count of days, hours, minutes and seconds of difference
' between datTimeStart and datTimeEnd converted to
' hours and minutes and seconds as a signed formatted string
' with an optional choice of time separator.
'
' Example:
' datTimeStart: #10:03:02#
' datTimeEnd : #20:01:18#
' returns : 9:58:16
'
' datTimeStart: #22:13:34#
' datTimeEnd : #3:45:47#
' returns : -18:27:47
'
' 2007-11-05. Cactus Data ApS, CPH.
Const cintSecondsHour As Integer = 60 * 60
Dim lngSeconds As Long
Dim strHourFull As String
Dim strHourPart As String
Dim strHMS As String
lngSeconds = DateDiff("s", datTimeStart, datTimeEnd)
strHourFull = CStr(lngSeconds \ cintSecondsHour)
' Format minute and second part.
strHourPart = Format(TimeSerial(0, 0, Abs(lngSeconds) Mod cintSecondsHour), "nn\" & strSeparator & "ss")
strHMS = strHourFull & strSeparator & strHourPart
FormatHourMinuteSecondDiff = strHMS
End Function