7 Dicas para deixar a macro mais rápida
Atualização: Se essas dicas não são o suficiente, clique aqui e conheça mais outras 9.
Para a versão inglês deste post, acesse este link.
Essa é para você que já está acostumado com a utilização das Macros em suas planilhas mas percebe que elas poderiam rodar um pouquinho mais rápido.
Vou mostrar uma série de códigos e dicas bastante simples que podem te ajudar a ganhar ainda mais tempo com suas planilhas automatizadas. Vamos a elas.
Se estiver com preguiça de ler, assista ao vídeo, caso contrário, continua mais abaixo.
1 – Desabilitando a atualização da tela
Este código faz com que o Excel não fique atualizando a tela mostrando toda a movimentação de escrever fórmulas, mover em planilhas, ou qualquer coisa que sua macro faça. Isso faz com que o computador não precise gastar tempo nem recurso atualizando a imagem a ser exibida na tela.
Application.ScreenUpdating = False 'Desabilita atualização de tela 'Seu código aqui Application.ScreenUpdating = True 'Habilita atualização de tela
2 – Modo de cálculo manual
Por padrão o Excel utiliza o modo de cálculo automático, o que significa que sempre que você altera o conteúdo de qualquer célula ele recalcula todas as outras de todas as abas de seu arquivo, e quanto mais fórmulas houverem, mais demorado vai ser.
Uma forma de acelerar sua Macro é desabilitar o modo de cálculo automático, e só habilitar quando for necessário recalcular alguma coisa na planilha.
Application.Calculation = xlManual 'Desativa modo automático de cálculo 'Seu código aqui Application.Calculation = xlAutomatic 'Ativa modo automático de cálculo
3 – Atualizar somente a planilha (aba) atual
Esta pode ser combinada com a anterior, e só faz sentido se sua pasta de trabalho tiver mais de uma planilha (aba).
O que ela faz é atualizar somente a planilha que está ativa, e não enquanto no modo de cálculo automático atualiza todas as fórmulas de todas as planilhas, com este código você atualiza somente a que estiver ativa no momento.
ActiveSheet.Calculate 'Calcula somente as fórmulas da aba ativa
4 – Evite usar a área de transferência
Quando utilizamos as funções de copiar e colar forçamos o computador a guardar em sua memória rápida os dados que copiamos. Para acelerar, e não utilizar essa memória do computador você pode usar os código abaixo.
Copiando e colando normalmente
Ao invés de utilizar algo do tipo:
Range("A1:A200").Copy Range("B1").PasteSpecial Application.CutCopyMode = False 'Limpa a área de transferência
Utilize algo como:
Range("A1:A200").Copy Destination:= Range("B1")
Copiando e colando valores
Ao invés de utilizar:
Range("A1:A200").Copy Range("B1").PasteSpecial xlPasteValues Application.CutCopyMode = False 'Limpa a área de transferência
Busque utilizar:
Range("B1:B200").Value = Range("A1:A200").Value
Copiando e colando fórmulas
Ao invés de usar algo como:
Range("A1:A200").Copy Range("B1").PasteSpecial xlPasteFormulas Application.CutCopyMode = False 'Limpa a área de transferência
Utilize:
Range("B1:B200").Formula = Range("A1:A200").Formula
5 – Inserir fórmula em várias células ao mesmo tempo
É provável que você tenha células com a mesma fórmula, normalmente em casos que você escreve a fórmula e depois arrasta ou copia para as outras células que serão iguais.
Utilizar o código anterior já acelera, a cópia, mas existe um jeito mais rápido, veja.
Ao invés de usar algo como:
Range("A1").FormulaR1C1 = "=SUM(RC[1]:RC[5])" 'Escreve fórmula na célula A1 Range("A1").Copy Range("A1:A20").PasteSpecial xlPasteFormulas 'Copia a fórmula de A1 até A20 Application.CutCopyMode = False 'Limpa a área de transferência
Tente usar:
Range("A1:A20").FormulaR1C1 = "=SUM(RC[1]:RC[5])" 'Escreve fórmula da célula A1 a A20
6 – Evite usar .select
Toda vez que aparece em seu código algo como:
Range("A1").Select
O Excel irá selecionar aquela célula da mesma forma que você faria com o mouse, o que é desnecessário pois leva tempo de processamento fazer isso, e você pode escrever praticamente tudo em sua macro sem utilizar o .select.
Se for necessário selecionar alguma célula, objeto, planilha, pasta de trabalho, faça assim:
Range("A1").Activate
Você conseguirá fazer praticamente as mesmas coisas que faria usando outro método, só que mais rápido.
7 – Limpe seu código
Se você monta boa parte de suas macros utilizando o gravador de macros uma boa prática é abrir e analisar o código recém escrito.
O gravador escreve tudo que você faz, inclusive aquelas partes desnecessárias, como mover a barra de rolagem, selecionar uma célula qualquer por acidente, ou qualquer outra coisa que você faça enquanto está gravando a macro que não tem nada a ver com o que você quer fazer de fato.
Ao analisar o código recém criado você também perceberá que poderá melhorar seu código utilizando as ouras dicas descritas aqui, substituindo alguns trechos e apagando outros.
Atualização: Se essas dicas não são o suficiente, clique aqui e conheça mais outras 9.
Excelentes Dicas. Ajudou muito!!
Obrigado
Fico feliz em saber 🙂
Nossa, gostei de mais das dicas. Vou usar de hoje em diante.
Muito útil, há tempos está precisando disso. Obrigado pela ajuda!
Muito bom o seu vídeo, o vi diversas vezes ao longo do ultimo 1 ano e meio e utilizei nas minhas planilhas.
Como seria esta cópia rápida por VBA porém somente para formatos?
Rodrigo, fenomenal as suas dicas. Parabens. Eu nao consegui dar o *like*. Quando puder me avisa como fazer. Forte Abraço.