Este post foi originalmente publicado em http://officevbavsto.blogspot.com/2011/05/quickshot-tornando-execucao-de-seu.html

Neste artigo, eu demonstro como reduzir drasticamente o tempo de execução de seu código VBA. Os seguintes comandos fazem toda a diferença.

Sub executa()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
End Sub

O primeiro, ScreenUpdating faz com que não seja mostrada a execução de seu código no Excel, ou seja, ele não fica mostrando planilhas sendo abertas, linhas sendo excluídas e etc. A tela fica estática. Isso reduz em muito o tempo de execução.

O outro é o Calculation. Este desliga o cálculo automático, o qual consume muito recurso de memória do seu computador. Se você realmente não precisa que sejam executados cálculos de fórmulas então o desligue, mas se em algum momento você precisa executar o cálculo você pode ligá-lo novamente ou mandar o Excel calcular apenas naquele momento.

Ligando o cálculo novamente:

Application.Calculation = xlCalculationAutomatic

Ou, fazendo o Excel calcular:

Sub manda_calcular()
    Calculate
End Sub

Este método equivale a você pressionar a tecla F9 ou clicar em Fórmulas -> Calcular Agora.

Delimitando a região de cálculo

O interessante do método Calculate é que você pode delimitar a região do cálculo:

Sub calcula_regia_especifica()
    Range("A1:A20").Calculate
End Sub

No exemplo acima, o Excel calcula apenas as células da região A1:A2.

Crédito

Photo by Lukas from Pexels