Notifications
Clear all

Resultado do calculo entre datas incorreto

4 Posts
2 Usuários
0 Reactions
1,125 Visualizações
(@4ntunes)
Posts: 0
New Member
Topic starter
 

Tenho o seguinte código

datainical = 01/07/2016 00:00:13
datafinal = 25/07/2016 23:46:00
resultado = datafinal - data inicial

Ao realizar esta operação a variável resultado tem o valor de [ 24,9807523148193]
* o vba não esta calculando o intervalo de datas e sim o intervalo de 24 horas.
Esperava obter [ 599:45:47 ] como resultado.

O que pode ser feito para calculas em horas o intervalo completo das datas ?
Obrigado

 
Postado : 22/12/2016 6:31 am
(@4ntunes)
Posts: 0
New Member
Topic starter
 

Resolvido
resultado = DateDiff("h", DataInicial, DataFinal)

 
Postado : 22/12/2016 7:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia 4ntunes,

O resultado não está errado.
Entretanto, para obter o resultado da forma como deseja, formate a célula como [hh]:mm:ss

Qualquer coisa da o grito.
Abraço

 
Postado : 22/12/2016 7:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente:
Se valor inicial/final digitados no editor VBE

Sub tt()
Dim DataInicial As Date, DataFinal As Date
Dim Tempo As Double
Dim Hora As Integer, Minuto As Integer, Segundo As Integer
DataInicial = CDate("01/07/2016 00:00:13")
DataFinal = CDate("25/07/2016 23:46:00")
Tempo = DataFinal - DataInicial
Hora = Int(Tempo * 24)
Minuto = Int((Tempo * 24 - Int(Tempo * 24)) * 60) 'calculado qtde minutos
Segundo = ((Tempo * 24 - Int(Tempo * 24)) * 60 - Int((Tempo * 24 - Int(Tempo * 24)) * 60)) * 60
resultado = Format(Hora, "00") & ":" & Format(Minuto, "00") & ":" & Format(Segundo, "00")
MsgBox resultado
End Sub

Valor inicial/final oriundos de planilha

Sub AchaHora()
Dim Tempo As Double
Dim Hora As Integer, Minuto As Integer, Segundo As Integer
Dim Resultado As String

Tempo = CDec((Sheets("Plan1").Range("c14").Value) - (Sheets("Plan1").Range("b14").Value))
Hora = Int(Tempo * 24)
Minuto = Int((Tempo * 24 - Int(Tempo * 24)) * 60) 'calculado qtde minutos
Segundo = ((Tempo * 24 - Int(Tempo * 24)) * 60 - Int((Tempo * 24 - Int(Tempo * 24)) * 60)) * 60

Resultado = Format(Hora, "00") & ":" & Format(Minuto, "00") & ":" & Format(Segundo, "00") 'Format(h3 * 24, "#0.0")
MsgBox Resultado
End Sub
 
Postado : 22/12/2016 8:41 am