Objetivo: Dar dicas para deixar a execução do VBA Excel mais rápida e profissional.
Ao longo do tempo de programação em VBA vamos nos deparando com situações que exigem muito processamento, o que causa muitas vezes processamento lento e telas piscando de forma incessante.
Neste artigo vamos ver algumas formas de tornar o código mais profissional e resolver alguns problemas que podem ocorrer nestas situações.
Desligar cálculo automático
Uma das primeiras dicas é desligar o cálculo automático quando iniciar o código VBA.
Muitas vezes existem fórmulas nas planilhas que estão sendo trabalhadas, e que durante a execução do código VBA elas vão sendo atualizadas automaticamente a cada iteração do código, o que faz com que o processo ocorra de forma mais lenta.
Para resolver este problema desligamos o cálculo automático ao início do processamento e ligamos novamente ao final, veja um exemplo:
Sub lsTeste() Application.Calculation = xlCalculationManual 'Aqui seu código Application.Calculation = xlCalculationAutomatic End sub
Desabilitar alertas do Excel
Um problema que ocorre muitas vezes é o Excel exibir os seus alertas durante a execução do código VBA, exemplo ao salvar como, ou iterações que questionam sobre a exclusão de um objeto, fazendo com que, muitas vezes, o usuário tenha que interagir desnecessariamente com o arquivo durante a execução.
Para resolver este problema utilize o código abaixo, atenção, pois é muito importante que ao final da execução seja ligado novamente, caso contrário o Excel não exibirá mais alertas.
Sub lsTeste() Application.DisplayAlerts = False 'Aqui seu código Application.DisplayAlerts = True End sub
Como evitar que a tela pisque durante a execução do código VBA
Esta dica além de tornar mais profissional o seu código, faz com que o processamento ocorra de forma muito mais rápida, dado que o sistema não precisará redesenhar a tela todas as vezes em que houver uma interação com uma planilha.
Para resolver este problema veja o exemplo abaixo, lembrando mais uma vez, é necessário ligar novamente ao final da execução.
Sub lsTeste() Application.ScreenUpdating = False 'Aqui seu código Application.ScreenUpdating = True End sub
Desabilitar eventos do Excel
Ás vezes programamos códigos que são executados á partir de eventos que ocorrem no Excel, por exemplo ao mudar de planilha, ou ao alterar dados, e nem sempre são desejados.
Neste caso podemos desabilitar os eventos do Excel, fazendo com que os mesmos não sejam chamados durante a execução de determinado código. Veja no exemplo do código, lembrando que sempre ao final é necessário ligar novamente.
Sub lsTeste() Application.EnableEvents = False 'Aqui seu código Application.EnableEvents = True End sub
Espero que este artigo tenha sido útil.
Abraço
Marcos Rieper