secondo me datediff è abbastanza facile

codice:
Private Function CalcolaIntervallo(DatIni As String, OraIni As String, DatFin As String, OraFin As String) As String
'########################################################################################
'# la funzione restituisce il tempo trascorso espresso in giorni ore e minuti da una    #
'# data e ora iniziale a una data e ora finale.                                         #
'# si aspetta date in fomato dd/mm/yyyy e orari in formato hh:mm                        #
'########################################################################################
    On Error GoTo lblError
    Dim giorni As Integer
    Dim ore As Integer, minuti As Long, secondi As Long
    Dim d1 As String, d2 As String 'date estese
    'controllo coerenza dati
    If Not (IsDate(DatIni) Or IsDate(DatFin)) Then
        CalcolaIntervallo = "-1"
        Exit Function
    End If
    If Not (IsDate(OraIni) Or IsDate(OraFin)) Then
        CalcolaIntervallo = "-1"
        Exit Function
    End If
    If CDate(DatIni) > CDate(DatFin) Then
        CalcolaIntervallo = "-1"
        Exit Function
    End If
    'calcolo del tempo trascorso

    d1 = DatIni & " " & OraIni
    d2 = DatFin & " " & OraFin
    secondi = DateDiff("s", d1, d2)
    ore = Fix(secondi / 3600)
    minuti = Fix(secondi / 60)
    CalcolaIntervallo = ore & ":" & Format$(minuti, "00")
Exit Function
lblError:
    Call GestErrore(Me.Name & ".CalcolaIntervallo")
End Function