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 DoEventsDoEvents 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 -
- Como usar o StrConv no Excel VBA?
- Converter números em texto no Excel (exemplos)
- Função VBA ByRef (exemplos com modelo do Excel)
- SUMIFS do Excel com datas | Modelo do Excel