NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosVba : Otimizando-codigo-vba
Quer receber novidades e e-books gratuitos?

Programação VBA - Curso Básico - Otimizando o desempenho do código VBA

Normalmente, algumas operações do VBA podem exigir bastante do processamento da máquina, especialmente códigos complexos ou como laços muito extensos.
Algumas técnicas podem ser aplicadas no código afim de conseguir um melhor desempenho de sua aplicação, abaixo exemplificarei algumas dessas técnicas.

Técnica 01 – Desativando a atualização de tela.
Ao executar um código VBA, por padrão o Excel atualiza a tela com as alterações do seu código, desde que tenha alguma interação com a tela como, por exemplo, códigos de alteração ou seleção de células. Para desativar esta atualização de tela basta incluir no início do seu código a propriedade Application.ScreenUpdating definida como falsa, como exemplifica abaixo:

Sub Minha_Macro()

    Application.ScreenUpdating = False
        Seu código...
    Application.ScreenUpdating = True

End Sub

Incluindo no final do código o Application.ScreenUpdating = True você retorna a propriedade ao padrão que é verdadeiro, onde as atualizações de tela são exibidas.

Técnica 02 – Parando o cálculo automático.
Quando a planilha possui muitas fórmulas/cálculos que exigem um processamento maior, normalmente as macros ficam um pouco mais lentas devido ao padrão do Excel para o cálculo de fórmulas que é automático. Podemos desativar esta propriedade durante o andamento do seu código e depois retornar ao estado padrão, para desabilitar o cálculo automático, basta inseri no início do seu código a propriedade Application.Calculation = xlCalculationManual, como exemplifica abaixo:

Sub Minha_Macro()

    Application.Calculation = xlCalculationManual
        Seu código...
    Application.Calculation = xlCalculationAutomatic

End Sub

Incluindo no final do código o Application.Calculation = xlCalculationAutomatic você retorna a propriedade ao padrão que é automático.

Técnica 03 – Desabilitando eventos.
Existem diversos eventos disponíveis no Excel e esses eventos podem executar operações demoradas o que dependendo da operação pode causar grande consumo de processamento e desempenho desnecessariamente. Por padrão esta propriedade está definida como verdadeira (True) mas podemos desativar quando queremos que os eventos não aconteçam.
Para desativar os eventos basta colocar no início do seu código a propriedade Application.EnableEvents definida como Falsa (False) como exemplifica abaixo:

Sub Minha_Macro()

Application.EnableEvents = False
        Seu código...
Application.EnableEvents = True

End Sub

Incluindo no final do código o Application.EnableEvents = True você retorna a propriedade ao padrão que é verdadeiro (True).

Abaixo veja a melhoria em processamento utilizando o código comum e o código otimizado, o código otimizado consumiu muito menos processamento da máquina que o código comum e também foi executado muito mais rápido.

Abaixo seguem os códigos utilizados para esta comparação.

CÓDIGO COMUM

tempo = Time()
Cells(1, 1).Select

For i = 1 To 5000
    Cells(i, 1).Select
    ActiveCell.Value = i
Next i 

CÓDIGO OTIMIZADO

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

tempo = Time()
Cells(1, 3).Select

For i = 1 To 5000
    Cells(i, 3).Select
    ActiveCell.Value = i
Next i

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

Application.EnableEvents = True
livros e cursos sugeridos sobre excel e vba:
Quer receber novidades e e-books gratuitos?

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2021 ®

[LIVRO]: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2010 - PASSO-A-PASSO

APRENDA COM JULIO BATTISTI - 1124 PÁGINAS: CLIQUE AQUI