Pessoal, boa noite!
Como posso aderir a essa função para que ela me retorne o valor total do intervalo entre a data incial e hora inicial e a data final e hora final?
Public Function fncIntervalo(HoraInicio As Date, HoraTermino As Date) As Date fncIntervalo = CDate(IIf(HoraTermino < HoraInicio, HoraTermino + 1, HoraTermino) - HoraInicio) End Function Private sub BTN_Calcular () If IsNull(Me!txt_horainicial) Or IsNull(Me!txt_horafinal) Then Exit Sub Me!txt_Horatotal = fncIntervalo(Me!txt_horainicial, Me!txt_horafinal) End SubPublic Function fncIntervalo(HoraInicio As Date, HoraTermino As Date) As Date fncIntervalo = CDate(IIf(HoraTermino < HoraInicio, HoraTermino + 1, HoraTermino) - HoraInicio) End Function Private sub BTN_Calcular () If IsNull(Me!txt_horainicial) Or IsNull(Me!txt_horafinal) Then Exit Sub Me!txt_Horatotal = fncIntervalo(Me!txt_horainicial, Me!txt_horafinal) End Sub
Welington Gonçalves
Boa tarde, WFranca
Sua rotina tava "quase lá". O que ocorreu foi uma justificável confusão na hora de definir o tipo de retorno de sua function fncIntervalo, pois vc definiu como As Date. Isto porque a diferença entre uma data e outra é uma quantidade (em dias, nesse caso), e não uma data. Portanto sua function deveria ser, por exemplo:
Public Function fncIntervalo(HoraInicio As Date, HoraTermino As Date) As Integer
Também precisa remover, pelo mesmo motivo, a conversão CDate(...) na atribuição do valor.
Só uma consideração, visto que não consegui mais editar o post acima. Considerei como Integer pois fiz a suposição que as diferenças seriam entre dias. Logicamente, se quiser mais refinamento (horas, minutos...) deverá mudar para Single ou Double e formatar a saída para exibir corretamente.
Pessoal, mesmo assim não consegui resultado,
porque eu preciso saber quanto tempo tive entre o intervalo das datas mas o meu resultado seria em horas... mas como insiro as datas nessa função ?
Public Function fncIntervalo(HoraInicio As Date, HoraTermino As Date) As Date fncIntervalo = CDate(IIf(HoraTermino < HoraInicio, HoraTermino + 1, HoraTermino) - HoraInicio) End Function Private sub BTN_Calcular () If IsNull(Me!txt_horainicial) Or IsNull(Me!txt_horafinal) Then Exit Sub Me!txt_Horatotal = fncIntervalo(Me!txt_horainicial, Me!txt_horafinal) End SubPublic Function fncIntervalo(HoraInicio As Date, HoraTermino As Date) As Date fncIntervalo = CDate(IIf(HoraTermino < HoraInicio, HoraTermino + 1, HoraTermino) - HoraInicio) End Function Private sub BTN_Calcular () If IsNull(Me!txt_horainicial) Or IsNull(Me!txt_horafinal) Then Exit Sub Me!txt_Horatotal = fncIntervalo(Me!txt_horainicial, Me!txt_horafinal) End Sub
Welington Gonçalves
Fazer esse cálculo com funções não é tão difícil assim e quem sabe te inspira na confecção da macro.
Se sua dúvida foi respondida marque o tópico como RESOLVIDO usando o botão com marca verde.
Amigos, sinceramente não consegui.
anexei um modelo de exemplo.. quem puder me ajudar...
Welington Gonçalves