domingo, 7 de abril de 2013

Dica: Calcular Range

Pessoal, boa noite!

Hoje vou compartilhar um código simples mas muito poderoso e que tem me auxiliado bastante no desenvolvimento de planilhas que trabalham com grande volume de cálculo.

Mesmo em arquivos que não ocupam muito espaço na memória, um volume elevado de funções pode deixar o cálculo muito lento. Aguardar 40 segundos, por exemplo, quando alguma nova função é implementada no arquivo pode ser extremamente oneroso ao longo de qualquer desenvolvimento.

Lendo o artigo presente neste link (leitura interessante), encontrei algumas dicas para otimização de performance. Também encontrei uma referência ao método "Range.Calculate", que permite calcular apenas uma área selecionada na planilha em uso! Este método pode ser chamado apenas através do VBA, o que pode ser implementado com a inserção da rotina abaixo:


Sub CalculaRange()

'Macro para calcular apenas as células no Range selecionado da planilha.

    Dim rng As Range
    Set rng = ActiveSheet.Range(Selection.Address(False, False)) 'Passa para a variável 'rng' o Range selecionado
        
    On Error Resume Next
    Application.Calculation = xlManual 'Muda modo de cálculo para manual
    rng.Calculate 'Calcula apenas o Range selecionado

End Sub

Uma outra dica: com o cálculo manual ativado, é que é possível calcular apenas as abas selecionadas usando "SHIFT + F9".

Estas funções são poderosas e muito úteis, mas devem ser usadas com cautela. Como nem sem o arquivo inteiro é recalculado, pode ser que o resultado visualizado na tela não seja igual ao do cálculo completo do arquivo.

Aos que se interessarem, recomendo também a leitura deste artigo que tem muita informação interessante.

Bom, é isso... Espero que tenham gostado!

Até a próxima!

Nenhum comentário:

Postar um comentário