VBA - Deixando mais rápido !
Uma dica simples para quem começou a escrever códigos para automatizar planilhas em Excel.
As vezes você desenvolve um super projeto, mas ele demora para executar.
As vezes você desenvolve um super projeto, mas ele demora para executar.
As dicas abaixo podem ajudar;
ScreenUpdating
As vezes é bonito ver tudo que a macro esta fazendo na tela, mudando de guia, abrindo e fechando planilha, fazendo cálculos...efim.
Mas isto deixa tudo mais lento. Neste caso deixe a tela congelada;
As vezes é bonito ver tudo que a macro esta fazendo na tela, mudando de guia, abrindo e fechando planilha, fazendo cálculos...efim.
Mas isto deixa tudo mais lento. Neste caso deixe a tela congelada;
Application.ScreenUpdating = False
Cálculos
Por padrão o cálculo automático fica habilitado. Sendo assim quanto uma macro é executada e tem um campo calculado o excel vai calcular enquanto a macro está executando.
Para evitar este problema, coloque no início do código;
Application.Calculation = xlCalculationManual
Antes de terminar, não esqueça de Ativar.
Mesmo que a planilha demore para calcular, ela fará tudo de uma vez. Ainda assim o ganho é perceptível.
Mesmo que a planilha demore para calcular, ela fará tudo de uma vez. Ainda assim o ganho é perceptível.
Application.Calculation = xlCalculationAutomatic
Aviso de Alerta
Entre abrir, salvar uma planilha, alguns alertas aparecem. Para evitar a perda de tempo para fechar o popup, utilize este código;
Application.DisplayAlerts = False
Ao terminar, não esqueça de ativar.
Application.DisplayAlerts = True
Application.DisplayAlerts = True
Status Bar
Bom, você desativou tudo. Agora você deve estar de perguntando. Tá agora onde a macro está? Travou ou tá executando? vai demorar muito?
O código abaixo, pode ser utilizado para apontar por exemplo, onde a macro está bem como dentro de um laço ( LOOP ) apontar qual linha está.
Pelos meus testes, este comando entra mais como auxílio e não vai deixar sua macro mais lenta, fique tranquilo.
Contando linhas dentro de um Loop ( Do While , Until , For )
Na maioria dos casos, o loop congela também.... para evitar este problema, coloque DoEvents no final do laço.
Exemplo:
For x = 1 To 100
Application.StatusBar = x
' o valor de x é sua variável.
DoEvents
Next X
Você também pode apontar um nome direto caso não tenha laço;
Exemplo:
Application.StatusBar = "A macro está calculando os valores"
Assim que terminar, desative a StatusBar
Application.StatusBar = False
Application.StatusBar = False
Ok ! é isso, façam os testes.
0 Comentários