VBA – Desligar (ou Ligar) os Cálculos Automáticos
In this Article
Sempre que você atualiza um valor de célula, o Excel passa por um processo para recalcular o arquivo. Ao trabalhar diretamente dentro do Excel você quer que isso aconteça 99,9% do tempo (a exceção é se você estiver trabalhando com uma pasta de trabalho extremamente grande). No entanto, isto pode realmente retardar o seu código VBA. É uma boa prática ajustar seus cálculos para manual no início das macros e restaurar os cálculos no final das macros. Se você precisar recalcular a pasta de trabalho, você pode dizer manualmente ao Excel para calcular.
Desligar Cálculos Automáticos
Você pode desligar o cálculo automático com uma macro, definindo-o como xlManual. Use a seguinte linha de código VBA:
Application.Calculation = xlManual
Voltar a Ligar os Cálculos Automáticos
Para ligar novamente o cálculo automático com o ajuste xlAutomatic:
Application.Calculation = xlAutomatic
Recomendo desativar os cálculos automáticos logo no início de seu procedimento e reativar os cálculos automáticos no final. Será assim:
Desativar Cálculos Automáticos Exemplo de Macro
Sub Exemplo_Calculo_Automatico()
Application.Calculation = xlManual
'Faça alguma coisa
Application.Calculation = xlAutomatic
End Sub
Cálculo Manual
Quando os cálculos automáticos são desativados, você pode usar o comando Calculate para forçar o Excel a recalcular:
Calculate
Você também pode dizer ao Excel para recalcular apenas uma planilha individual:
Worksheets("Planilha1").Calculate
Você também pode dizer ao VBA para recalcular apenas um intervalo (clique para ler nosso artigo sobre métodos de cálculo VBA)
Eis como isto pode parecer dentro de uma macro:
Sub Exemplo_Calculo_Manual()
Application.Calculation = xlManual
'Faça alguma coisa
'Recalcular
Calculate
'Faça mais coisas
Application.Calculation = xlAutomatic
End Sub
Configurações VBA – Aceleração do Código
Se seu objetivo é acelerar seu código, você também deve considerar o ajuste dessas outras configurações:
A desativação do Screenupdating pode fazer uma enorme diferença na velocidade:
Application.ScreenUpdating = False
O desligamento da Barra de Status também fará uma pequena diferença:
Application.DisplayStatusBar = False
Se seu arquivo contém eventos, você também deve desativar eventos no início de seus procedimentos (para acelerar o código e para evitar loops infinitos!):
Application.EnableEvents = False
Por último, seu código VBA pode ser desacelerado quando o Excel tenta recalcular as quebras de página (Nota: nem todos os procedimentos serão impactados). Para desativar o DisplayPageBreaks, use esta linha de código:
ActiveSheet.DisplayPageBreaks = False
Codificação VBA facilitada
Pare de procurar por código VBA online. Saiba mais sobre AutoMacro – Um construtor de códigos VBA que permite aos iniciantes codificar procedimentos a partir do zero com o mínimo de conhecimento de codificação e com muitos recursos que economizam tempo para todos os usuários!