Calcular VBA - Agora, pasta de trabalho, planilha ou intervalo

Este tutorial vai te ensinar todas as diferentes opções de Calcular 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 onde 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 extremamente devagar, como toda vez que uma célula muda, o Excel deve recalcular.

Para aumentar a velocidade do VBA, muitas vezes você desejará desativar os cálculos automáticos no início de seus procedimentos:

1 Application.Calculation = xlManual

e reative-o no final:

1 Application.Calculation = xlAutomatic

No entanto, e se você quiser calcular todas (ou parte) de suas pastas de trabalho dentro de seu procedimento? O restante deste tutorial vai te ensinar o que fazer.

Calcule agora

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

1 Calcular

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

Calcular apenas a folha

Você também pode dizer ao VBA para calcular apenas uma planilha específica.

Este código irá recalcular a planilha ativa:

1 ActiveSheet.Calculate

Este código irá recalcular a Folha1:

1 Folhas ("Folha1"). Calcular

Calcular Alcance

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

1 Folhas ("Folha1"). Intervalo ("a1: a10"). Calcular

Calcular Fórmula Individual

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

1 Intervalo ("a1"). Calcule

Calculate Workbook

Não há opção do 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 Calcular:

1 Calcular

Isso calculará todas as pastas de trabalho abertas. Se você está realmente preocupado com a velocidade e deseja calcular uma pasta de trabalho inteira, pode ser mais seletivo sobre quais pastas de trabalho estão abertas ao mesmo tempo.

Calculate Workbook - Métodos que não funcionam

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

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

1234567 Sub Recalcular_Workbook ()Dim ws como planilhaPara cada ws nas planilhasws.CalculatePróximo wsEnd Sub

Este código funcionará bem se todas as suas planilhas forem "independentes", o que significa que nenhuma de suas planilhas contém cálculos que se referem a outras planilhas.

No entanto, se suas planilhas se referirem a outras planilhas, seus cálculos podem não ser atualizados corretamente. Por exemplo, se você calcular a Planilha1 antes da Planilha2, mas as fórmulas da Plan11 dependem de cálculos feitos na Planilha2, então 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:

12 ThisWorkbook.Sheets.SelectActiveSheet.Calculate

No entanto, isso causará o mesmo problema.

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

wave wave wave wave wave