Notifications
Clear all

Voltar o relógio do contador ao valor inicial sem ser 00:00:

3 Posts
3 Usuários
0 Reactions
1,127 Visualizações
(@nill2013br)
Posts: 0
New Member
Topic starter
 

Caros amigos no código abaixo que funciona como um cronometro ao término ele da uma mensagem de tempo completado. Como faço para que ele volte ao valor inicial na célula de contagem, ao invés dela ficar 00:00:00?

Sub Countup()
Dim CountDown As Date
CountDown = Now + TimeValue("00:00:01")
Application.OnTime CountDown, "Realcount"
End Sub

Sub Realcount()
Dim count As Range
Set count = [D1]
count.Value = count.Value - TimeSerial(0, 0, 1)
If count <= 0 Then MsgBox "Tempo Completado."
Call Countup
End Sub

 
Postado : 08/09/2016 1:48 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Como não informou o Valor Inicial, ajuste de acordo com o que pretende:

Sub Realcount()
    Dim count As Range
    
    Set count = [D1]
    
    count.Value = count.Value - TimeSerial(0, 0, 1)
    
    If count <= 0 Then
        MsgBox "Tempo Completado."
        
        'Repõe o Valor em D1 de 10 segundos
        [D1] = TimeValue("00:00:10")
        Exit Sub
    End If
    
    Call Countup

End Sub
 
Postado : 08/09/2016 8:16 pm
(@issamu)
Posts: 0
New Member
 

Mauro, precisa colocar o "Exit Sub" dentro do "If" para não entrar em loop infinito, uma vez que tem a chamada para o Countup, que chama novamente o Realcount, que por sua vez vai chegar ao If com a condição não atendida. Eu utilizaria um procedimento só com o comando Application.Wait ao invés de dois procedimentos com o comando Application.OnTime.

Sub Realcount()
Dim count As Range
Dim dInicial As Date

Set count = [D1]
dInicial = count.Value

Do Until [D1] = "00:00:00"

Application.Wait Now + TimeValue("00:00:01")

count.Value = count.Value - TimeSerial(0, 0, 1)

If count <= 0 Then
    MsgBox "Tempo Completado."
    count.Value = dInicial
    Exit Sub
End If

Loop

End Sub
 
Postado : 09/09/2016 6:29 am