Excel - Macro para fazer contagem de 1 a 5.

Anônima
2016-05-26T14:28:50+00:00

Bom dia pessoal, estou iniciando em macros e gostaria de uma ajuda para iniciar uma contagem de 1 a 5 em uma única célula, de forma contínua até que eu mandasse parar.

A principio, utilizei um IF para montar a contagem, e depois incluí um "Application.OnTime" para repetir a sequencia, acontece que eu não consegui fazer a contagem para, eu utilizei o codigo de parada a baixo mas não funciona.

Alguém me ajuda? des de já obrigado. 

Sub timer() ' inicia a contagem intermitente de 1 a 5 a cada 5 segundos

Application.OnTime Now + TimeValue("00:00:05"), Procedure:="timer"

If Range("a1") = "1" Then

Range("a1") = "2"

ElseIf Range("a1") = "2" Then

Range("a1") = "3"

ElseIf Range("a1") = "3" Then

Range("a1") = "4"

ElseIf Range("a1") = "4" Then

Range("a1") = "5"

ElseIf Range("a1") = "5" Then

Range("a1") = "1"

End If

End Sub

____________________________________________________________________________________________________

Public Sub StopTimer() ' Para o temporizador

On Error Resume Next

Application.OnTime Now + TimeValue("00:00:01"), Procedure:="Timer", Schedule:=False

End Sub

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2016-05-27T14:25:13+00:00

Ah, ok! Agora entendi o cenário!

Tente assim:

Public RunWhen As Double

Public Const cIntervaloSegundos = 5 ' 5 segundos

Public Const cSub = "TheSub"  ' Procedimento a ser chamado

Sub StartTimer()

RunWhen = Now + TimeSerial(0, 0, cIntervaloSegundos)

Application.OnTime EarliestTime:=RunWhen, Procedure:=cSub, _

Schedule:=True

End Sub

Sub TheSub()

If Range("A1").Value <> 5 Then

Range("A1").Value = Range("A1").Value + 1

Else

Range("A1").Value = 1

End If

StartTimer

End Sub

Sub StopTimer()

On Error Resume Next

Application.OnTime EarliestTime:=RunWhen, Procedure:=cSub, _

Schedule:=False

End Sub

Crie um botão para a macro StartTimer, para iniciar e outro botão para a macro StopTimer para parar!

Abraços!

Esta resposta foi útil?

0 comentários Sem comentários

7 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2016-05-27T12:50:51+00:00

    Bom dia Rafael! Obrigado pela resposta.

    Muito boa a forma que vc fez a macro, vou implementar, mas como faço para parar ficar rodando direto de 1 a 5 e depois para parar?

    Obrigado pela ajuda

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2016-05-27T12:34:36+00:00

    Bom dia Maicon Resende, ok obrigado.

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2016-05-27T12:18:20+00:00

    Olá amigo,

    Eu utilizaria a função Application.wait ao invés da Application.OnTime.

    Veja uma possibilidade:

    Sub timer() ' inicia a contagem intermitente de 1 a 5 a cada 5 segundos

    Range("A1").Value = 1

    Do Until Range("A1").Value = 5

    Application.Wait (Now + TimeValue("0:00:5"))

    Range("A1").Value = Range("A1").Value + 1

    Loop

    End Sub

    Abraços!

    Esta resposta foi útil?

    0 comentários Sem comentários
  4. Anônima
    2016-05-27T11:57:58+00:00

    Olá AnicesioSantos Junior, tudo bem?    

    Bem-vindo à Comunidade da Microsoft. 

    Neste caso, recomendo que poste a sua dúvida no link abaixo que vai direcioná-lo ao Fórum MSDNque é um fórum especialmente destinados para desenvolvedores e profissionais em TI.

    Fórum MSDN

    Se esta informação foi útil, por favor, marque como resposta, caso a sua dúvida não tenha sido solucionada, por favor, poste novamente.

    Espero ter ajudado, até mais!

    Esta resposta foi útil?

    0 comentários Sem comentários