VBA Calculate – Agora, Pasta de Trabalho, Planilha ou Intervalo

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on July 10, 2023

Este tutorial ensinará a você todas as diferentes opções de cálculo no VBA.

Por padrão, o Excel calcula todas as pastas de trabalho abertas sempre que é feita uma alteração na pasta de trabalho. Ele faz isso seguindo uma árvore de cálculo em que, se a célula A1 for alterada, ele atualiza todas as células que dependem da célula A1 e assim por diante. No entanto, isso pode fazer com que seu código VBA seja executado de forma extremamente lenta, pois toda vez que uma célula é alterada, o Excel precisa recalcular.

Para aumentar a velocidade do VBA, você geralmente deseja desativar os cálculos automáticos no início dos procedimentos:

Application.Calculation = xlManual

e reativá-los no final:

Application.Calculation = xlAutomatic

No entanto, e se você quiser calcular todas as pastas de trabalho (ou parte delas) em seu procedimento? O restante deste tutorial lhe ensinará o que fazer.

Calcular Agora

Você pode usar o comando Calcular para recalcular tudo (em todas as pastas de trabalho abertas):

Calculate

Geralmente, esse é o melhor método a ser usado. Entretanto, você também pode executar cálculos mais restritos para aumentar a velocidade.

Calcular Somente a Planilha

Você também pode instruir o VBA a calcular apenas uma planilha específica.

Esse código recalculará a planilha ativa:

ActiveSheet.Calculate

Este código recalculará a Planilha1:

Sheets("Planilha1").Calculate

Calcular Intervalo

Se precisar de um cálculo mais restrito, você pode dizer ao VBA para calcular apenas um intervalo de células:

Sheets("Planilha1").Range("a1:a10").Calculate

Calcular Fórmula Individual

Esse código calculará apenas uma fórmula de célula individual:

Range("a1").Calculate

Calcular Pasta de trabalho

Não existe uma opção VBA para calcular apenas uma pasta de trabalho inteira. Se você precisar calcular uma pasta de trabalho inteira, a melhor opção é usar o comando Calculate (Calcular):

Calculate

Isso calculará todas as pastas de trabalho abertas. Se estiver realmente preocupado com a velocidade e quiser calcular uma pasta de trabalho inteira, talvez seja possível ser mais seletivo quanto às pastas de trabalho que estão abertas ao mesmo tempo.

Calcular Pasta de Trabalho – Métodos que Não Funcionam

Há alguns métodos que você pode se sentir tentado a usar para forçar o VBA a calcular apenas uma pasta de trabalho, mas nenhum deles funcionará corretamente.

Esse código percorrerá cada planilha da pasta de trabalho e recalculará as planilhas uma de cada vez:

Sub Recalcular_Pasta()
    Dim ws As Worksheet
    
    For Each ws In Worksheets
        ws.Calculate
    Next ws
End Sub

Esse código funcionará bem se todas as planilhas forem “independentes”, ou seja, se nenhuma delas contiver cálculos que se refiram a outras planilhas.

Entretanto, se as planilhas fizerem referência a outras planilhas, os cálculos poderão não ser atualizados corretamente. Por exemplo, se você calcular a Planilha1 antes da Planilha2, mas as fórmulas da Planilha1 dependerem de cálculos feitos na Planilha2, suas fórmulas não conterão os valores mais atualizados.

Você também pode tentar selecionar todas as planilhas de uma vez e calcular a planilha ativa:

ThisWorkbook.Sheets.Select
ActiveSheet.Calculate

No entanto, isso causará o mesmo problema.

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA