è il tuo "dovrebbe" che mi preoccupa 
Comunque ecco il codice:
With objRstFiltrato
Do While Not .EOF
entrataTmp = entrata
uscitaTmp = uscita
'--> calcolo compenso
If entrataTmp >= CDate(Format(entrataTmp, "dd/mm/yyyy") & " " & !fasciaOrariaDalle) And entrataTmp <= CDate(Format(entrataTmp, "dd/mm/yyyy") & " " & !fasciaOrariaAlle) Then
calcoloCompenso_ricercaUscita:
'--> se entrata e uscita sono nella stessa fascia oraria
If uscitaTmp <= CDate(Format(uscitaTmp, "dd/mm/yyyy") & " " & !fasciaOrariaAlle) Then
oreLavorate = ElapsedTime(uscitaTmp - entrataTmp, "ore:minuti:secondi")
compensoOrario = compensoOrario + ((Hour(oreLavorate) + Minute(oreLavorate) / 60) * !tariffaOraria)
chkProseguiRicerca = False
Else
oreLavorateTmp = ElapsedTime(CDate(uscitaTmp & " " & !fasciaOrariaAlle) - entrataTmp, "ore:minuti:secondi")
compensoOrario = compensoOrario + ((Hour(oreLavorateTmp) + Minute(oreLavorateTmp) / 60) * !tariffaOraria)
entrataTmp = DateAdd("s", 1, uscitaTmp & " " & !fasciaOrariaAlle)
chkProseguiRicerca = True
End If
If chkProseguiRicerca = True Then
.MoveNext
GoTo calcoloCompenso_ricercaUscita
End If
End If
'<-- / calcolo compenso
.MoveNext
Loop
End With
per completezza la ElapsedTime l'ho presa qui:
https://docs.microsoft.com/it-it/off...-datetime-data