Тёмный

Vídeo #65 - Aprenda como deixar seu código em VBA muito mais rápido 

Organic Sheets
Подписаться 8 тыс.
Просмотров 6 тыс.
50% 1

Vídeo #65 - Aprenda como deixar seu código em VBA muito mais rápido
Nesse vídeo eu mostro um script para deixar seu código em Excel VBA muito mais rápido, faça o teste!
✍️ Se Inscreva no canal: / @organicsheets
🎦 Robô de Whatsapp: • Vídeo #41 - ATUALIZAÇÃ...
🎦 Site da Organic Sheets: organicsheets....
Me segue no LinkedIn?
www.linkedin.com/in/fernando-nepomuceno-6a740599
Código:
Sub velocidade_on()
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Cursor = xlWait
End With
End Sub
Sub velocidade_off()
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Cursor = xlDefault
End With
End Sub

Опубликовано:

 

22 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 46   
@luciamariaandrade956
@luciamariaandrade956 2 месяца назад
Demais esse vídeo, gostaria muito de vê o vídeo sobre tratamento de erros, vc já fez?
@MikelSFraga
@MikelSFraga 2 года назад
Boa noite Fernando. Quando o assunto é performance, eu adoro mexer, explorar e testar. Normalmente, para esse tipo de execução, utilizo a propriedade ScreenUpdating, do objeto Application. Desativo a execução de tela (valor False) e reativo ao final da execução (valor True). Então, resolvi fazer um comparativo desta Solução Nativa x Solução Organic. Seguem abaixo os códigos e o melhor resultado obtido em cada teste: 1) Solução Nativa (ScreenUpdating True/False) Sub teste1() ' Melhor tempo: 2,3516 segundos Application.ScreenUpdating = False tempo = Timer For i = 1 To 50000 Planilha1.Cells(i, 1) = i Next i MsgBox Round(Timer - tempo, 2) Application.ScreenUpdating = True End Sub 2) Solução Organic (Velocidade On/Off) Sub teste2() ' Melhor tempo: 1,11 segundos velocidade_on tempo = Timer For i = 1 To 50000 Planilha1.Cells(i, 1) = i Next i MsgBox Round(Timer - tempo, 2) velocidade_off End Sub Como podem ver, a Solução Organic, chegou a executar com menos da metade do tempo, se comparado com a Solução Nativa. Isso mostra o quanto o código realmente ficou muito bom e o vídeo muito didático. Claro que não parei por ai. Quando comecei a transcrever esse comentário, me veio uma ideia... e se combinasse as Soluções (Navita + Organic)??? Vejam o resultado abaixo: 3) Solução Combinada (Nativa + Organic) Sub teste3() ' Melhor tempo: 1,08 segundos velocidade_on Application.ScreenUpdating = False tempo = Timer For i = 1 To 50000 Planilha1.Cells(i, 1) = i Next i MsgBox Round(Timer - tempo, 2) Application.ScreenUpdating = True velocidade_off End Sub A combinação, chegou a ser ainda mais rápida do que as soluções individuais. Eu fico louco com essas coisas... rs Como foi dito no vídeo, a diferença é mínima, pois o processo é simples. Mas, quando analisamos em ganhos percentuais de tempo, qualquer porcentagem tem um ganho extremamente significativo. Por esse motivo, quis trazer essa comparação, como feedback pelo trabalho e para os inscritos. Mais uma vez Fernando, parabéns pelo trabalho. Forte abraço.
@OrganicSheets
@OrganicSheets 2 года назад
Mikel como sempre seus comentários são enriquecedores. Valeu mesmo pela colaboração. 🤙🤙
@maleck25
@maleck25 Год назад
Olá, não entendi o ganho de 0.02 segundos. Mesmo se usarmos 1.35 milhões de interações, estatisticamente a diferença é zero, sem contar que foram adicionadas duas linhas a mais de codigo. No inicio do "call velocidade_on" desativa-se o ScreenUpdating. Um par de linhas mais tarde, o ScreenUpdating vai ser novamente desativado em "Application.ScreenUpdating=False". Ou seja, desativou e desativou de novo algo que já tinha sido desativado. Na sequencia, a rotina segue executando e, quando finaliza, o "Application.ScreenUpdating=True" é ativado, sendo que um par de linhas depois, o "call velocidade_off" ativa mais uma vez o que acabou de ser ativado.
@eduardojorge9199
@eduardojorge9199 Год назад
@@maleck25 depende do conteudo da planilha, se for recheada de formulas e formatações condicionais a diferença é enorme
@pedrohenrique.12
@pedrohenrique.12 2 года назад
Curtinho 😂😂😂 mas pelo menos vale a pena assistir
@OrganicSheets
@OrganicSheets 2 года назад
Kkkkk Pedro 🤝😂
@pedraodepirapora
@pedraodepirapora 9 месяцев назад
Sensacional!
@OrganicSheets
@OrganicSheets 9 месяцев назад
Obrigado Pedrão.
@russigomes
@russigomes 2 года назад
Parabéns, muito obrigado por compartilhar.
@OrganicSheets
@OrganicSheets 2 года назад
Rogério, eu que agradeço por deixar seu comentário, isso é motivador. Aquele abraço.
@fabioluiz8677
@fabioluiz8677 Год назад
Deixando um like e um abraço
@OrganicSheets
@OrganicSheets Год назад
Fico contente com seu LIKE 🤝😎👍
@joserenatolacerdapaulo3369
@joserenatolacerdapaulo3369 Год назад
Excelente didática e dicas muito boas. Valeu!
@OrganicSheets
@OrganicSheets Год назад
Que isso José, fico feliz com seu elogio #tmj
@Jane-kn7rj
@Jane-kn7rj 2 года назад
Muito eficiente. Obrigada
@OrganicSheets
@OrganicSheets 2 года назад
Obrigado por comentar, essa técnica faz realmente uma diferença!
@williamsouza6760
@williamsouza6760 Год назад
Fez muita diferença no meu projeto, até então eu usava apenas o ScreenUpDating e Calculation, acrescentando essas demais linhas de código mudou o meu projeto positivamente.
@OrganicSheets
@OrganicSheets Год назад
Que legal, Willian! Fico feliz em saber que as novas linhas de código fizeram diferença positiva no teu projeto. Pequenas alterações podem ter um impacto significativo, né? Continue explorando e experimentando novas técnicas. Se precisar de mais dicas, estou aqui para ajudar. Parabéns pelo progresso no projeto e sucesso em tudo!
@luciamariaandrade956
@luciamariaandrade956 2 месяца назад
Muito top, temos muita sorte de ter pessoas como você , que dividi seus conhecimentos. Me tira uma dúvida, eu posso fazer esse procedimento dentro da propria macro,vai alterar alguma coisa na velocidade? eu desabilitei no incio de minha macro e habilitei no final. usei diretamente o application sem usar o with. se eu fizer dessa forma que vc fez ,fazendo a macro de velocidade separada , a minha macro vai ficar mais rápida?
@AlexLogica
@AlexLogica 2 года назад
Algo que observei tb que impacta bastante no tempo é evitar ficar "catando milho" tratando célula por célula. Sempre q possível tratar um intervalo grande de uma única vez
@OrganicSheets
@OrganicSheets 2 года назад
Sim Alex, faz todo o sentido!
@gil259
@gil259 Год назад
Ganhou mais um INSCRITO. Cara eu uma planilha de análise de loterias, quando eu criei ela em 2015 levava cerca de 9:00 horas para executar uma análise com 100mil combinações, depois de um tempo consegui otimizar e o tempo caiu para uma média de 3 horas minutos, ai fiz outra otimização e o tempo caiu para uns 35 minutos, agora vou implementar suas dicas e ver o tempo ganho na execução. Parabéns e obrigado pelas dicas...
@OrganicSheets
@OrganicSheets Год назад
Que bom que está dando frutos, faça bom proveito das dicas e obrigado por comentar 😎
@Garbin1107
@Garbin1107 2 года назад
Tenho planilha que é um mix de VBA com fórmulas do Excel. Quando colocar isso vai parar afetar de maneira negativa?
@OrganicSheets
@OrganicSheets 2 года назад
Olá Paulo, tudo jóia? Muito pelo contrário, utilizando esse script vai melhorar e muito a velocidade da execução do seu código. Assista o vídeo e faça o teste, depois me conta aqui o que achou, beleza?
@cledemirgava1712
@cledemirgava1712 2 года назад
Show! É sempre bom à execução ser rápido. Tenho um i7 com 16 de RAM, igual ao seu e, foi top. Parabéns, vou te seguir. Obrigado!!! AT. O fundo do VBA escuro, dificulta muito a visualização, pense nisso, abraço!
@OrganicSheets
@OrganicSheets 2 года назад
Obrigado pela dica Cledemir, vou melhorar o fundo e o zoom na hora de gravar. Aquele abraço (obs: máquina top a sua rsrs)
@shymira
@shymira 2 года назад
23:00 o usuário sempre ferrando com o programador kkkk
@OrganicSheets
@OrganicSheets 2 года назад
shymira essa é a absoluta verdade kkkkkkkk
@kleber_bispo
@kleber_bispo 2 года назад
olá Fernando. Legal essas dicas. Você sabe dizer se é possível manipular threads no VBA para trabalhar de forma assincrona?
@OrganicSheets
@OrganicSheets 2 года назад
Ihhh Kleber, vou ficar lhe devendo essa resposta.
Год назад
Boa tarde, Fernando. Uma dúvida, se eu tiver várias abas de planilhas conectadas nos cálculos, seria possível "travar" o cálculo apenas de uma aba específica, ou seja, em quanto o meu código estiver rodando, tornar o cálculo manual apenas de uma aba e não de todas?
@OrganicSheets
@OrganicSheets Год назад
Teria que ver o código para entender melhor, dependendo talvez seja sim possível.
@FernandoSouza-c4g
@FernandoSouza-c4g 10 месяцев назад
Bom dia Professor, eu tenho uma macro que cria um csv da base de dados e o Power Query faz a leitura, assim eu ganho performance. Ao final do código eu deleto o csv e o código é executado antes da atualização do Power Query terminar. Tem como esperar a atualização das pivot terminar para deletar o csv?
@OrganicSheets
@OrganicSheets 10 месяцев назад
Opa amigo, você pode fazer um loop enquanto a conexão está atualizando e excluir o CSV somente depois da atualização concluir. ' Aguardar a conclusão da atualização das consultas Do While ThisWorkbook.Connections(1).Refreshing DoEvents Loop ' Aqui o código para excluir o arquivo CSV Tem que ver se tem mais de uma conexão no seu projeto pq aí vai ter que colocar no loop também. Nesse exemplo, seu código fica preso no loop enquanto a conexão (1) estiver atualizando ainda e só vai para exclusão quando terminar a atualização dos dados. Espero ter ajudado.
@vitornet4428
@vitornet4428 11 месяцев назад
Para cada macro tem que fazer essa código?
@OrganicSheets
@OrganicSheets 11 месяцев назад
Eu utilizo em todos os meus processos mais críticos em relação a tempo de execução.
@RodrigoAiosa
@RodrigoAiosa 2 года назад
Olá, USE array e terá mais velocidade ainda. att
@OrganicSheets
@OrganicSheets 2 года назад
Obrigado pela dica Rodrigo, mas ainda preciso me aprofundar mais nos estudos sobre Arrays rs.
@RodrigoAiosa
@RodrigoAiosa 2 года назад
@@OrganicSheets Se eu puder ajudar me avise. =)
@OrganicSheets
@OrganicSheets 2 года назад
Boa Rodrigo, valeu pela ajuda! Abraços
@eduardojorge9199
@eduardojorge9199 2 года назад
@@OrganicSheets serio que vc ainda nao sabe usar array? de maneira simples para te facilitar é só enxergar arrays como tabelas ou a propria planilha mas com tamanho menor dim array(101,101) as variant é como uma planilha de 100 linhas x 100 coluns se quiser iniciando em 1 é, dim array(1to100, 1 to 100) variant é como a planilha, aceita qualquer tipo de dados, de bit até outros arrays daí vc já consegue imaginar a facilidade de trabalhar com arrays
@samuel.oliveiraBRA
@samuel.oliveiraBRA Год назад
@@eduardojorge9199 Faça uma vídeo aula e posta pra gente pra aprender também
Далее
БЕЛКА РОЖАЕТ#cat
00:19
Просмотров 674 тыс.
I Made this VBA Code 2,880,952% faster
12:21
Просмотров 26 тыс.
10 Formas de Aumentar a Velocidade do VBA Excel
17:27