Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
Avatar do usuário
Por Sandman
Posts Avatar
#45008
Olá bom dia , estou trabalhando em uma planilha onde tenho uma funcao que pega a hora atual do sistema assim que a funcao é iniciada, e no final da funcao é pego novamente a hora atual do sistema e armazenada em uma segunda variavel, pois bem, esse processamento demora coisa de segundos ou minutos e segundos no maximo, nao chega a ser maior que 1 hora, gostaria de saber se alguem pode me ajudar, pois gostaria de subtrair a da hh:mm:ss da segunda variavel pela hh:mm:ss da primeira variavel, para no final exibir quanto tempo demorou o processamento, porem pelo que pesquisei na net nenhuma forma funcionou para mim, alguem pode me ajudar?

obs* ja tentei usar como data ao inves de string tb as variaveis mas sem sucesso :roll:

exemplo estou usando:
Código: Selecionar todos
sub teste()

    Dim t1, t2, total As String

    t1 = Time
   
'procedimentos da funcao 

t2 = time

'aqui eu queria obter a diferenca em minutos e segundos do tempo que demorou para a funcao executar o processamento
'total = t2 - t1    

end sub
desde já agradeço :mrgreen:
Avatar do usuário
Por gfranco
Avatar
#45010
Bom dia.
Veja se te ajuda:
Código: Selecionar todos
Sub main()

Dim a As Date, b As Date

a = VBA.CDbl(VBA.TimeValue("23:58:00")) 'aqui a variável a será a hora de início da macro, então ficará a=vba.cdbl(vba.time)
b = VBA.CDbl(VBA.TimeValue("00:03:15")) 'aqui a variável a será a hora de fim da macro, então ficará b=vba.cdbl(vba.time) no final da execução


MsgBox IIf(b < a, VBA.Format(1 + b - a, "hh:mm:ss"), VBA.Format(b - a, "hh:mm:ss"))

End Sub
Avatar do usuário
Por Sandman
Posts Avatar
#45014
@gfranco, obrigado pela resposta sua funcao funciona perfeitamente, mas tentei adapta-la para a minha necessidade e ela apresenta um erro quanto aos minutos, vc poderia me ajudar a entender o porque?
Código: Selecionar todos
MsgBox "O Processamento demorou " & (VBA.Format(t2 - t1, "hh"))  & " horas e " & (VBA.Format(t2 - t1, "mm")) & " minutos e " & (VBA.Format(t2 - t1, "ss")) & " segundos "
eu queria que fosse apresentado assim, mas como o calculo esta acontecendo no mesmo minuto por exemplo inicio 12:15:30 e fim 12:15:45,
esta voltando como resposta por exemplo 00 horas 12 minutos e 15 segundos, ou seja as horas e segundos estao sendo calculadas corretamente mas os minutos nao entendo o porque mas era pra dar zero e esta dando 12 :roll:

desde já agradeço viu e irei marcar como resposta, so queria entender mesmo o pq isso esta acontecendo :mrgreen:
Avatar do usuário
Por gfranco
Avatar
#45015
Amigo, veja se assim te atende:
Código: Selecionar todos
Sub main()

Dim a As Date, b As Date
Dim tempo As Date
a = VBA.CDbl(VBA.TimeValue("23:58:00")) 'aqui a variável a será a hora de início da macro, então ficará a=vba.cdbl(vba.time)
b = VBA.CDbl(VBA.TimeValue("00:03:15")) 'aqui a variável a será a hora de fim da macro, então ficará b=vba.cdbl(vba.time) no final da execução


tempo = IIf(b < a, VBA.Format(1 + b - a, "hh:mm:ss"), VBA.Format(b - a, "hh:mm:ss"))


MsgBox "O processamento demorou: " & VBA.Hour(tempo) & " hora(s), " & VBA.Minute(tempo) & " minuto(s) e " & VBA.Second(tempo) & " segundo(s)"


End Sub
Avatar do usuário
Por Sandman
Posts Avatar
#45016
gfranco, é isso mesmo meu amigo, muito obrigado pela ajuda, abs :mrgreen:
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord