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
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
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-2025 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI