Este fórum foi descontinuado. LEIA AQUI e participe da Comunidade BABOO :)

Ir para conteúdo
excel123

Macro rodar até célula a1 chegar em determinado valor

Mensagem Recomendada

Pessoal, tenho essa macro que achei na NET:

Em A1 digito o valor 1. Preciso que vá somando de 1 em 1 automaticamente até chegar no valor especificado na macro (10000) sem que eu precise ficar apertando um botão para mudar o valor.  A macro deve rodar automaticamente assim que eu digite 1 e de ENTER em A1, passando por todos os valores (1-2-3-4...10000), só parando quando chegar em 10000.

 

Sub Macro1()
If Range("A1") = 10000 Then
Exit Sub
Else
Range("a1").Value = Range("a1").Value + 1
End If
End Sub

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

1-Teste de tempo em vários processadores. (coloquei como exemplo até 10000, mas, em muitos processadores, essa contagem é instantânea, então usarei valores bem maiores, tipo 10 milhões ou mais ou menos.

2-Imagine que na célula F5 (F5 = várias células mescladas para poder aumentar o tamanho da letra) tenha uma fórmula do tipo =SE(E(A1>1000;A1<10000)= "X";SE(E(A1>10000;A1<20000)= "Y"...etc, onde "X", "Y" mostrarão figuras diversas (com a fonte Wingdings) ,formando uma espécie de desenho animado. Irei ajustar os intervalos para que as figuras apareçam por um tempo que possam ser vistas rapidamente...

3-Construir uma espécie de relógio, em que, se A1<>determinado valor, dará a impressão de que os ponteiros estão em movimento...

Esses são alguns projetos, mas dependo que a macro rode de 1 até ... e só pare ao atingir o valor pré-estabelecido.

Obrigado

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se ajuda.

Instale o código abaixo no módulo da planilha, assim:
1. copie o código daqui
2. clique com o direito na guia da planilha de interesse e escolha 'Exibir código'
3. cole o código na janela em branco que vai se abrir
4. feito! 'Alt+Q' para retornar para a planilha e testar

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim tempo As Date
  If Target.Address = "$A$1" And Target.Value = 1 Then
   tempo = Now
   Application.ScreenUpdating = False
   Application.EnableEvents = False
    Do While Range("A1").Value < Range("C1").Value
      Range("A1").Value = Range("A1").Value + 1
    Loop
   tempo = Now - tempo
   Cells(Rows.Count, 7).End(3)(2) = Range("A1").Value
   Cells(Rows.Count, 8).End(3)(2) = Format(tempo, "ss,ss")
   Application.EnableEvents = True
   Application.ScreenUpdating = True
  End If
End Sub


obs.
1. para rodar o código coloque o valor limite em 'C1' e em seguida entre o valor 1 em 'A1'
2. coloquei no código um cronômetro e ao finalizar a contagem o código colocará nas colunas 'G:H' o valor limite e o tempo gasto em "ss,ss" (centésimos de segundo)
3. coloquei no código um comando para desativar a atualização da tela, então a contagem não será mostrada em 'A1' durante a execução, se você quiser que a contagem seja mostrada basta comentar a linha do comando colocando um apóstrofo no seu início, assim: 'Application.ScreenUpdating = False. O tempo de execução é menor com a atualização desativada (=False).
4. de forma análoga você poderá desativar o cronômetro
5. se em lugar de colocar o valor limite em 'C1' você preferir colocá-lo diretamente no código então substitua esta parte Range("C1").Value pelo valor desejado

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código Worksheet_Change é disparado após qualquer alteração no conteúdo de qualquer célula da planilha, é um dos chamados "eventos de planilha" e deve ser instalado sempre no módulo da planilha de interesse.

A diferença quanto ao disparo em relação ao código que você estava utilizando (este é recomendável que seja instalado em um módulo comum, 'Módulo1', por exemplo) é que o que passei dispara automaticamente após a alteração na célula ao passo que o seu depende de um disparo manual.


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×
×
  • Criar Novo...