Função DoEvents do VBA do Excel

Quando escrevemos códigos enormes, sempre caímos na armadilha do VBA. Quando o código é grande, o VBA leva um tempo para concluir o processo de execução e execução. O que pode levar de um minuto a vários minutos. Este é o período em que todos ficam irritados. E não podemos fazer mais nada nesse período. Mas, para evitar isso, temos uma função no VBA chamada DoEvents. Com a ajuda do DoEvents, podemos executar o código em segundo plano e, simultaneamente, também podemos fazer outros tipos de coisas. Não podemos trabalhar apenas em outra ferramenta ou software, mas também podemos interromper o código ou interromper o processo de execução.

Depois de inserir DoEvents no código, além do VBA, também teremos o controle do trabalho que queremos fazer. O lado bom do DoEvents é que ele não tem nenhum tipo de sintaxe para escrever. Podemos colocar diretamente os eventos onde queremos assumir o controle do VBA e executar as tarefas conforme nossa necessidade.

Como usar a função DoEvents no Excel VBA?

Abaixo estão os diferentes exemplos para usar a função DoEvents no Excel usando o código VBA.

Você pode fazer o download deste modelo do Excel do VBA DoEvents aqui - Modelo do Excel do VBA DoEvents

DoEvents do VBA do Excel - Exemplo # 1

Embora para executar DoEvents, precisamos de um conjunto enorme de dados onde possamos ver como o código está sendo interrompido. Então, usaremos um loop, onde os números serão aplicados até que o código seja concluído. Para isso, siga as etapas abaixo:

Etapa 1: Abra um módulo no VBA na guia do menu Inserir, como mostrado abaixo.

Etapa 2: escreva o subprocedimento do VBA DoEvents ou podemos escolher qualquer nome para definir o código conforme nossa necessidade.

Código:

 Sub VBA_DoEvents () End Sub 

Etapa 3: Agora defina uma variável em qualquer nome com os tipos de dados Long. O objetivo de considerar o tipo de dados como Long é porque usaremos o tamanho de dados que desejamos, o que não é possível se considerarmos Inteiro.

Código:

 Sub VBA_DoEvents () Dim A As Long End Sub 

Etapa 4: Agora abra um loop For-Next, onde colocaremos as condições.

Código:

 Sub VBA_DoEvents () Dim A A quanto tempo para o próximo Sub End 

Etapa 5: considere o intervalo de um número de sua escolha que pode ser visto sendo implementado. Aqui estamos tomando o intervalo de 1 a 2000 na variável definida A.

Código:

 Sub VBA_DoEvents () Dim A contanto que A = 1 a 20000 Próximo A End Sub 

Etapa 6: Depois de definir o intervalo de números, selecionaremos o intervalo de células em que veremos as alterações nos números que escolhemos acima. Digamos que o intervalo de células seja de A1 a A5. Também poderia ser uma célula única.

Código:

 Sub VBA_DoEvents () Dim A como longo para A = 1 a 20000 Range ("A1: A5"). Valor = A Próximo A End Sub 

Etapa 7: agora execute o código clicando no botão Play, localizado abaixo da barra de menus.

Veremos que o código foi concluído imprimindo os números de 1 a 20000, mas não conseguimos detê-lo.

Etapa 8: para obter o controle total do código, aplique DoEvents após as condições do loop, como mostrado abaixo.

Código:

 Sub VBA_DoEvents () Dim A como longo para A = 1 a 20000 intervalo ("A1: A5"). Valor = A DoEvents Próximo A End Sub 

Etapa 9: Agora, execute novamente o código. E, neste momento, tentamos interromper o código clicando no botão Parar, perceberemos que o código será interrompido entre os processos antes de concluir a avaliação de 20000.

DoEvents do VBA do Excel - Exemplo # 2

Há outro tipo de processo para implementar DoEvents. Mas para isso também precisaremos de um código enorme, como visto no exemplo-1. Para isso, siga as etapas abaixo:

Etapa 1: escreva o subprocedimento do VBA DoEvents, como mostrado abaixo.

Código:

 Sub VBA_DoEvents2 () End Sub 

Etapa 2: abra diretamente um loop For-next sem definir uma variável.

Código:

 Sub VBA_DoEvents2 () para o próximo final Sub 

Etapa 3: escolha um intervalo numérico que veremos sendo executado. Deixe o intervalo de 1 a 20000, igual ao exemplo-1.

Código:

 Sub VBA_DoEvents2 () para A = 1 a 20000 Próximo final Sub 

Etapa 4: Agora coloque diretamente qualquer trabalho para saída, digamos que a saída seja como mostrado abaixo. E o intervalo de valores será +1 do valor real.

Código:

 Sub VBA_DoEvents2 () Para A = 1 a 20000 Saída = Saída + 1 Próximo Fim Sub 

Etapa 5: agora selecione o intervalo em que queremos ver a saída. Deixe a célula ser A1.

Código:

 Sub VBA_DoEvents2 () Para A = 1 a 20000 Saída = Saída + 1 Faixa ("A1"). Valor = Saída Próximo Fim Sub 

Etapa 6: e, finalmente, colocaremos DoEvents no final da condição do loop For.

Código:

 Sub VBA_DoEvents2 () Para A = 1 a 20000 Saída = Saída + 1 Faixa ("A1"). Valor = Saída DoEvents Próxima extremidade Sub 

Etapa 7: e execute o código pressionando a tecla F5. Veremos, podemos fazer qualquer coisa, mesmo quando o código está sendo executado. Para demonstração, selecionei as células B1 e C1. Os números atingiram apenas 4348, o que é bem menor que o limite que estabelecemos.

Etapa 8: se removermos os DoEvents e executar o código, não poderemos fazer nada até que o código seja concluído. Vamos ver isso também.

Código:

 Sub VBA_DoEvents2 () Para A = 1 a 20000 Saída = Saída + 1 Faixa ("A1"). Valor = Saída Próximo Fim Sub 

Etapa 9: Agora execute o código novamente. Como podemos ver, enquanto tentamos clicar em Parar, o código não parou. E o recurso Reproduzir ainda estava LIGADO.

Prós e contras dos Excel VBA DoEvents

  • Podemos trabalhar em qualquer ferramenta ou arquivo em segundo plano enquanto o código VBA estiver sendo executado em paralelo.
  • Usar DoEvents não nos impede de fazer o trabalho que queremos quando o código está em execução.
  • Ele substitui a planilha ou pasta de trabalho quando alternamos entre as diferentes planilhas ou pasta de trabalho.
  • O código para quando escrevemos ou alteramos a célula por um momento e não somos notificados.

Coisas para lembrar

  • Se fizermos algo sem aplicar o DoEvents, haverá uma grande possibilidade de o código congelar o sistema e o arquivo. E que retomaremos os arquivos assim que o código for completamente executado ou travar o arquivo com vários cliques.
  • Podemos ver a mudança no processo enquanto trabalhamos no outro trabalho simultaneamente.
  • Depois de concluir o código, salve o arquivo no formato excel ativado por macro para evitar a perda de código.
  • Tente aplicar o código em um conjunto enorme e grande de códigos, onde veremos a implementação e o uso reais.

Artigos recomendados

Este é um guia para os DoEvents do VBA. Aqui discutimos como usar a função DoEvents no Excel usando o código VBA, juntamente com exemplos práticos e modelo do Excel para download. Você também pode consultar nossos outros artigos sugeridos -

  1. Como usar o StrConv no Excel VBA?
  2. Converter números em texto no Excel (exemplos)
  3. Função VBA ByRef (exemplos com modelo do Excel)
  4. SUMIFS do Excel com datas | Modelo do Excel

Categoria: