Notifications
Clear all

Calcular intervalo entre datas e horas

6 Posts
3 Usuários
0 Reactions
1,727 Visualizações
wfranca
(@wfranca)
Posts: 297
Reputable Member
Topic starter
 

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

 
Postado : 11/08/2016 11:33 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

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.

 
Postado : 12/08/2016 9:43 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

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.

 
Postado : 12/08/2016 10:05 am
wfranca
(@wfranca)
Posts: 297
Reputable Member
Topic starter
 

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

 
Postado : 18/08/2016 6:19 pm
DJunqueira
(@djunqueira)
Posts: 772
Prominent Member
 

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.

 
Postado : 18/08/2016 10:03 pm
wfranca
(@wfranca)
Posts: 297
Reputable Member
Topic starter
 

Amigos, sinceramente não consegui.

anexei um modelo de exemplo.. quem puder me ajudar...

Welington Gonçalves

 
Postado : 22/08/2016 10:26 am