Diferença de horári...
 
Notifications
Clear all

Diferença de horários pelo VBA

10 Posts
3 Usuários
0 Reactions
2,505 Visualizações
(@tiamun)
Posts: 20
Eminent Member
Topic starter
 

Olá,

tenho uma planilha onde preciso ter a diferença de horário entre a celulas I - C.

Como são varias celulas, preciso do resultado desta subtração.

Para entender melhor:

Sempre que eu preencher com double click na celula I a vba ja vai fazer o calculo que preciso e preencher na celula K.

Ou seja:

If Target.Column = 9 Then
Cells(Target.Row, 11).Value = I - C End If

Porém, a diferença de I-C está dando o resultado sempre de 0:00:00 preciso que este de o retorno, em dias, horas, minutos e segundos.

Alguem pode me ajudar? acredito que o erro esteja apenas no I-C.

obrigado.

 
Postado : 08/12/2014 7:19 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Provavelmente, alguma coisa com formatos. Como vc não anexou a planilha, fica difícil ver.

Então, com venda nos olhos, eu tentaria assim:

If Target.Column = 9 Then Cells(Target.Row, 11).Value2 = Format(CDbl(I) - CDbl(C), "dd, hh:mm:ss")

A parte em vermelho deve ter a formatação que vc preferir.

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 08/12/2014 7:26 am
(@tiamun)
Posts: 20
Eminent Member
Topic starter
 

Não funcionou, retorna o seguinte resultado.

30, 00:00:00

indiferente da formatação o calculo não é feito.

 
Postado : 08/12/2014 9:16 am
Reinaldo
(@rlm)
Posts: 246
Estimable Member
 

Até onde sei o VBA não "trabalha" com horas acima de 24 hs.
Experimente algo do tipo (considerando que I e C são valores em celulas:

Sub AchaHora()
tempo = CDec((Sheets("Plan1").Range("B3").Value) - (Sheets("Plan1").Range("B2").Value))
hora = Int(tempo * 24) ' calculada qtas horas
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
MsgBox Format(hora, "00") & ":" & Format(Minuto, "00") & ":" & Format(segundo, "00") 'Format(h3 * 24, "#0.0")
End Sub

Avalie tambem o uso da finção (em vba) Datediff

Reinaldo

 
Postado : 08/12/2014 9:25 am
(@tiamun)
Posts: 20
Eminent Member
Topic starter
 

Ainda nao resolveu.

 
Postado : 08/12/2014 10:03 am
(@gtsalikis)
Posts: 2373
Noble Member
 

E a planilha vc não vai postar, né?

Se tivesse postado, já na primeira resposta estaria resolvido. Mas, se vc quer perder tempo...

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 08/12/2014 10:26 am
(@tiamun)
Posts: 20
Eminent Member
Topic starter
 

Amigo, na verdade nao consigo fazer upload, estou trabalhando, por isso nao postei, minha internet é limitada espero que voce compreenda.

 
Postado : 08/12/2014 11:34 am
(@gtsalikis)
Posts: 2373
Noble Member
 

tiamun,

Não é que não queira entender. É que desse jeito a gente fica tentando advinhar porque não deu certo.

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 08/12/2014 11:58 am
Reinaldo
(@rlm)
Posts: 246
Estimable Member
 

Ainda nao resolveu.

Somente assim fica muito no ar.

Como disse, seria algo +/- conforme postei.
Porque +/-: (entre outros)
depende de como é recebido os valores,
depende a disposição/configuração dos dados
depende de como aplicou o exemplo
depende de como está configurado o retorno

Você também não mencionou se tentou o datediff

Reinaldo

 
Postado : 08/12/2014 12:06 pm
(@tiamun)
Posts: 20
Eminent Member
Topic starter
 

Segue planilha de exemplo.

 
Postado : 30/12/2014 7:55 am