Por mais legal que pareça observar sua macro VBA manipular a tela, você pode ajudar sua macro a funcionar mais rapidamente se desligar (desabilitar) a atualização de tela.
Desativar ScreenUpdating
1. Para desativar o ScreenUpdating, no início do seu código, coloque esta linha:
1 | Application.ScreenUpdating = False |
Ativar atualização de tela
2. Para reativar o ScreenUpdating, no final do seu código, coloque esta linha:
1 | Application.ScreenUpdating = True |
Exemplo de atualização de tela VBA
Seu procedimento ficará assim:
1234567891011 | Sub ScreenUpdating_Example ()Application.ScreenUpdating = False'Faça alguma coisaIntervalo ("a1"). Copiar intervalo ("b1")Faixa ("a2"). Faixa de cópia ("b2")Faixa ("a3"). Faixa de cópia ("b3")Application.ScreenUpdating = TrueEnd Sub |
Atualização de tela e atualização
Desativar o ScreenUpdating fará com que seu código VBA seja executado MUITO mais rápido, mas também fará com que seu trabalho pareça mais profissional. Os usuários finais normalmente não querem ver as ações dos bastidores de seus procedimentos (especialmente quando o procedimento é lento). Além disso, você pode não querer que os usuários finais vejam a funcionalidade dos bastidores (por exemplo, planilhas ocultas). Eu recomendo desativar (e reativar) o ScreenUpdating em praticamente todos os seus procedimentos.
No entanto, há momentos em que você deseja que a tela seja atualizada. Para atualizar a tela, você precisará ativar temporariamente o ScreenUpdating (não há comando de "atualização" da tela):
123 | Application.ScreenUpdating = True'Faça alguma coisaApplication.ScreenUpdating = False |
Configurações de VBA - Código de aceleração
Existem várias outras configurações para melhorar a velocidade do código.
Desativar cálculos automáticos pode fazer uma diferença ENORME na velocidade:
1 | Application.Calculation = xlManual |
Desativar a barra de status também fará uma pequena diferença:
1 | Application.DisplayStatusBar = False |
Se sua pasta de trabalho contiver eventos, você geralmente deve desativar os eventos no início do seu procedimento:
1 | Application.EnableEvents = False |
Por último, seu código VBA pode ficar lento quando o Excel tenta recalcular quebras de página (Observação: nem todos os procedimentos serão afetados). Para desativar a exibição de quebras de página, use esta linha de código:
1 | ActiveSheet.DisplayPageBreaks = False |