Há algum tempo que estou a desenvolver uma base na qual tenho um botão que leva a um código para calcular a diferença entre uma hora final e outra inicial. Ou seja, calcular o tempo a que uma tarefa está a decorrer.
O código que utilizei para gerir a qestão das horas é o seguinte, que encontrei numa busca pela net:
Function GetElapsedTime(interval)
Dim totalhours As Long, totalminutes As Long, totalseconds As Long
Dim days As Long, hours As Long, minutes As Long, Seconds As Long
days = Int(CSng(interval))
totalhours = Int(CSng(interval * 24))
totalminutes = Int(CSng(interval * 1440))
totalseconds = Int(CSng(interval * 86400))
hours = totalhours Mod 24
minutes = totalminutes Mod 60
Seconds = totalseconds Mod 60
GetElapsedTime = days * 24 + hours & " Horas " & minutes & _
" Min. " & Seconds & " Seg. "
End Function
Depois foi criar o botão de comando com o seguinte código:
MsgBox (GetElapsedTime(Now() - [Hora]))
Isto funciona bem desde que os campos hora estejam no formato DD-MM-YYYY H:M
Tenho estes campos a abrir com a hora do sistema neste formato. Se for necessário alterar a hora ou data e não ficar neste formato dá erro de overflow.
Também não consegui usar apenas as horas porque não dá certo quando a hora final corresponde a um dia diferente da inicial.
Já procurei muito e não encontro solução mais simples para isto. Para além disso eu sou um mero utilizador que gosta de meter o nariz na programação
Alguém tem alguma ideia melhor e mais funcional que esta?
Cumprimentos
jess
O código que utilizei para gerir a qestão das horas é o seguinte, que encontrei numa busca pela net:
Function GetElapsedTime(interval)
Dim totalhours As Long, totalminutes As Long, totalseconds As Long
Dim days As Long, hours As Long, minutes As Long, Seconds As Long
days = Int(CSng(interval))
totalhours = Int(CSng(interval * 24))
totalminutes = Int(CSng(interval * 1440))
totalseconds = Int(CSng(interval * 86400))
hours = totalhours Mod 24
minutes = totalminutes Mod 60
Seconds = totalseconds Mod 60
GetElapsedTime = days * 24 + hours & " Horas " & minutes & _
" Min. " & Seconds & " Seg. "
End Function
Depois foi criar o botão de comando com o seguinte código:
MsgBox (GetElapsedTime(Now() - [Hora]))
Isto funciona bem desde que os campos hora estejam no formato DD-MM-YYYY H:M
Tenho estes campos a abrir com a hora do sistema neste formato. Se for necessário alterar a hora ou data e não ficar neste formato dá erro de overflow.
Também não consegui usar apenas as horas porque não dá certo quando a hora final corresponde a um dia diferente da inicial.
Já procurei muito e não encontro solução mais simples para isto. Para além disso eu sou um mero utilizador que gosta de meter o nariz na programação
Alguém tem alguma ideia melhor e mais funcional que esta?
Cumprimentos
jess