Desligue (ou ligue) os cálculos automáticos - Exemplos de código VBA

Sempre que você atualiza um valor de célula, o Excel passa por um processo para recalcular a pasta de trabalho. Ao trabalhar diretamente no Excel, você deseja que isso aconteça 99,9% do tempo (a exceção é se você estiver trabalhando com uma pasta de trabalho extremamente grande). No entanto, isso pode realmente desacelerar seu código VBA. É uma boa prática definir seus cálculos como manuais no início das macros e restaurar os cálculos no final das macros. Se precisar recalcular a pasta de trabalho, você pode dizer manualmente ao Excel para calcular.

Desligue os cálculos automáticos

Você pode desativar o cálculo automático com uma macro, definindo-o como xlmanual. Use a seguinte parte do código VBA:

1 Application.Calculation = xlManual

Ativar novamente os cálculos automáticos

Para reativar o cálculo automático com a configuração xlAutomatic:

1 Application.Calculation = xlAutomatic

Eu recomendo desativar os cálculos automáticos no início de seu procedimento e reativar os cálculos automáticos no final. Isso parecerá assim:

Desativar exemplo de macro de cálculos automáticos

12345678 Sub Auto_Calcs_Example ()Application.Calculation = xlManual'Faça alguma coisaApplication.Calculation = xlAutomaticEnd Sub

Cálculo Manual

Quando os cálculos automáticos estão desativados, você pode usar o Calcular comando para forçar o Excel a recalcular:

1 Calcular

Você também pode dizer ao Excel para recalcular apenas uma planilha individual:

1 Planilhas ("planilha1"). Calcule

Você também pode dizer ao VBA para recalcular apenas um intervalo (clique para ler nosso artigo sobre os métodos de cálculo do VBA)

Veja como isso pode ficar dentro de uma macro:

12345678910111213 Sub Auto_Calcs_Example_Manual_Calc ()Application.Calculation = xlManual'Faça alguma coisa'RecalcCalcular'Faça mais coisasApplication.Calculation = xlAutomaticEnd Sub

Configurações de VBA - Código de aceleração

Se sua meta é acelerar seu código, você também deve considerar ajustar estas outras configurações:

Desativar a atualização de tela pode fazer uma grande diferença na velocidade:

1 Application.ScreenUpdating = False

Desligar a barra de status também fará uma pequena diferença:

1 Application.DisplayStatusBar = False

Se sua pasta de trabalho contém eventos, você também deve desabilitar eventos no início de seus procedimentos (para acelerar o código e evitar loops infinitos!):

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 DisplayPageBreaks, use esta linha de código:

1 ActiveSheet.DisplayPageBreaks = False

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave