PH1959, eu utilizei a mesma fórmula para fazer o cálculo normal das horas e utilizei a idéia de comparar as horas, no meu caso ficou assim
Cálculei o horário total de trabalho da entrada a saída e depois subtrai o tempo que ele ficou antes de começar o horário adicional e o tempo que ele passou do horário final do adicional
No meu lançamento de exemplo ficou assim
1ªentrada 1ª saida 2ª entrada 2ª saida
20:00 00:00 01:00 06:00
'Cálculo adicional noturno
HoraInicial = TxtEntrada1(N).Text
HoraFinal = TxtSaida2(N).Text
adicional = 0
If HoraFinal < HoraInicial Then 'aki garante que ele entrou no horário adicional
If HoraFinal > HoraInicial Then
horas_trabalhadas = Format((HoraFinal - HoraInicial) * 24, "#0.0")
Else
horas_trabalhadas = Format((1 + HoraFinal - HoraInicial) * 24, "#0.0")
End If
'horas_trabalhadas=10
If HoraInicial < "22:00" Then adicional = adicional + Format((InicioAdicional-HoraInicial) * 24, "#0.0") ' 2 horas - calculo de quantas horas antes do inicio da hora adicional
If HoraFinal > "05:00" Then adicional = adicional + Format((HoraFinal - TerminoAdicional) * 24, "#0.0") ' 3 hora - calculo de quantas horas após o término da hora adicional
adicional = horas_trabalhadas - adicional ' 10 - 3 = 7
totaladicional = totaladicional + adicional 'acumular total de adicional noturno
End If
A mesma idéia utilizei para calcular a extra, caso o funcionário vire a noite
Valeu pela idéia PH1959 e pela força
Abraço