Não é preciso sofrimento para melhorar a performance de sua planilha, para deixar Macro mais rápida vou te ensinar 4 simples passos muuuito eficientes.😉
Sensacional! Amigo, eu fiz um sistema Frente de Caixa e Gestor de Estoque para minha mercearia e depois de 4 mil vendas registradas o delay pra salvar uma nova venda já estava em 33s, isso quando computador estava dedicado somente ao sistema sem mais nada aberto... O screen updating já estava ativo, mas a diferença maior foi desativar os cálculos e os eventos... De 33s passou para apenas 6s e isso pode melhorar mais ainda eliminando os selects como bem disse em sua última dica, porém isso no momento não vou fazer porque preciso avaliar bem o código para não deixar nada inoperante. Agradeço imensamente a sua dica gratuita e sucesso ao seu canal!
MUITO TOP! Tenho uma planilha que em um PC ela roda meu código rapidinho, mas quando abrir em outro pc estava demorando uns 20seg pra gravar os dados da tela para a planilha, ao colocar esses códigos tá executando em 3seg. Show de bola. O link desse vídeo está salvo no código rsrsrs. valeu!
Atualização de tela e Eventos eu já tirava, mas o calculo automático vai mudar muito minha planilha que é cheeeeia de fórmulas kkkk Muito obrigado. Ganhou um inscrito
Excelentes dicas, estou começando a aprender sobre VBA e essas suas dicas são top! Vou aplicá-las em um planilha que já estava me dando esse problema de tempo de execução e te dou um retorno!
Olá Eliezer. É muito relativo o tamanho do ganho, pois depende muito do código que está utilizando. Caso haja um loop, é mais provável que melhore a velocidade de execução. Se houver "seleções" de células ao longo da macro, também pode haver um ganho na remoção dessas seleções. Obrigado por acompanhar o canal.👍 Um abraço.😉
Рік тому
Muito boa a aula, professor! Gostaria de tirar uma dúvida se possível, teria como em quanto a macro rodar habilitar o cálculo manual apenas de uma aba específica da planilha, caso eu tenha várias abas contendo planilhas e uma referenciando a outra? Um forte abraço.
Muito obrigado! Dicas Sensacionais!!!! Porém eu ainda tenho problemas. Uso o Office 365 e, para formatar, preciso excluir cerca de 200 colunas de forma alternada dentro da planilha de dados (sem fórmula). O Excel demora cerca de 4 minutos para realizar a tarefa. tem alguma dica para este caso?
Olá Joanes, tudo bom? Muito grato em ajudar.😉 Por favor, envia esse arquivo, deixa eu ver se podes melhorar alguma coisa nessas exclusões, uma vez que não há formulas acredito que poderia ser executado de modo mais rápido. Quantas linhas estão ocupadas nesta tabela? marcusrodello@excelonlinebrasil.com
Muito bom!!! No trabalho tenho várias planilhas com Macros ... e uma coisa BEM CHATA é que, se incluo uma coluna ou linha, tenho que ir em todas as Macros e mudar as Matrizes!!! ... Alguma solução para isto?? ... Obrigado!!!
Feliz em ajudar. Voce pode utilizar um codigo que vai identificar qual a ultima linha preenchida na coluna que especificar, por exemplo : Range("a" & Rows.Count).end(xlUp).row Abs😉
@@ExcelOnlineBrasil, linha nem é tão grave, já que dou sempre uma boa margem. No caso de coluna parece que achei uma solução. Ao invés de colocar a matriz no código, vou colocar automática numa célula e usar este código: Application.Goto Reference:="INDIRECT(R1C9)" . Essa semana vou testar.
Olá WO.SANTANNA SANT"ANNA . Desculpe, não consegui mentalizar corretamente a situação. Você mencionou das células serem ambas iguais, porém depois disse de uma ter valor maior que a outra. Pode exemplificar melhor por favor? Um abraço.👍
@@ExcelOnlineBrasil boa noite... a minha ideia e copiar dados de uma lista criando uma nova .sem que tenha repeticoes na mesma linha... comparacoes dentro de uma plan
Professor, embora eu tenha utilizado todos os códigos abaixo para desabilitar a tela e a atualização de eventos durante a execução do código (reativei no final), a tela pisca ao final da execução da macro. Como resolver isso? Sub Ordenar_TabelaCartao() Application.ScreenUpdating = False Application.DisplayAlerts = False Application.EnableEvents = False Application.EnableAnimations = False Application.DisplayStatusBar = False Application.Calculation = xlCalculationManual shtTabelas.Activate
End Sub Sub Renumerar_TabelaCartao() Dim linha As Integer Dim conte As Integer Dim vazio As Integer linha = 5 conte = 1 shtTabelas.Activate Cells(5, 25).Activate Do Until shtTabelas.Cells(linha, "Y") = "" If ActiveCell "" Then shtTabelas.Cells(linha, "X") = conte linha = linha + 1 conte = conte + 1 End If ActiveCell.Offset(1, 0).Activate Loop End Sub
Professor, esto quebrando a cabeça em classificar um combobox (A Z), já vi vários vídeos e não encontrei nada que desse resultado, na verdade um dos vídeos diz que por ter um laço em todos os itens ou linha demora um pouco, acaso tem alguma coisa que possa ajudar?
@@ExcelOnlineBrasil Sim por um loop TotalItens = Controls(Objeto).ListCount - 1 For I = Inicio To TotalItens For X = 1 To TotalItens If Controls(Objeto).List(I) > Controls(Objeto).List(X) Then Temp = Controls(Objeto).List(X) Controls(Objeto).List(X) = Controls(Objeto).List(I) Controls(Objeto).List(I) = Temp End If Next X Next I Exit Sub Só que não funciona.
Olá pessoal :) Alguém sabe se macro pode dar bug no Excel? Meu formatar como tabela não funciona mais e nem a Microsoft conseguiu me ajudar, eu compartilho a conta com a minha irmã e o dela está normal. Obrigada.
Olá Aline. Já tentou remover o office, reiniciar a maquina e reinstalar? Ou efetuar a reparação da instalação? Isto pode ajudar.😉 Nunca vi uma macro causar problemas no excel, mas ja vi macros que por exemplo, desabilitavam a tecla "delete" por algum motivo, mas que depois quando nao era mais necessario desabilitar, o pessoal esquecia de remover o codigo. Aí fica parecendo um problema do excel, mas na verdade ele está apenas seguindo a programação. 👍
@@ExcelOnlineBrasil Olá,obrigada, tentei a reparação e não deu certo, mas vou tentar tirar o Office e instalar novamente, ouvi que também poderia ser porque eu instalei o Windows 11, vou tentar de tudo aqui rs. Muito obrigada pelo retorno 🙂.
Poxa vida Weslan. Rapaz, uma tela azul na hora de testar um código é desanimador mesmo. Mas é uma oportunidade para tentar novamente, e gerar mais aprendizado. Continue com essa garra. Abraço👍
Public Sub ControleGMA_BarraProgresso_FrmProgresso() Dim Total As Long Dim x As Long Dim Largura As Long Dim Percentual As Double Total = 10000 With UserFormControleMCProgresso Largura = .Lbl_Evolucao_FrmControleMCProgresso.Width .Show End With For x = 1 To Total Percentual = x / Total With UserFormControleMCProgresso .Lbl_Evolucao_FrmControleMCProgresso.Width = Percentual * Largura .Lbl_Valor_FrmControleMCProgresso.Caption = Round(Percentual * 100, 1) & "%" .Repaint ' Forçar a atualização da tela DoEvents ' Permitir que a interface seja atualizada End With Next Unload UserFormControleMCProgresso End Sub
Ver o resultado inicial para o resultado final foi incrível!
Não é preciso sofrimento para melhorar a performance de sua planilha, para deixar Macro mais rápida vou te ensinar 4 simples passos muuuito eficientes.😉
FANTÁSTICO!!!!
Achei que o 99% do título era só pra chamar a atenção. Num é que diminuiu esse tanto mesmo?! Muito massa.
Caramba massa demais, eu pensando que sabia alguma coisa, passando é vergonha kk Top, sim bora aprender elevar o nível.
Eu não amei, eu adorei. Muito obrigado pelo conhecimento!
Muito bom, não sabia que retirar o ".select" acelera a execução do código. Parabéns pela excelente didática. Estou inscrito.🎯
Sensacional.
A do cálculo manual eu tinha descoberto sozinho, mas o restante achei sensacional, principalmente a última dica
Feliz em ter ajudado Victor, desempenho de macros é sempre algo para se considerar no desenvolvimento de um recurso. Abs.
Sensacional!
Amigo, eu fiz um sistema Frente de Caixa e Gestor de Estoque para minha mercearia e depois de 4 mil vendas registradas o delay pra salvar uma nova venda já estava em 33s, isso quando computador estava dedicado somente ao sistema sem mais nada aberto... O screen updating já estava ativo, mas a diferença maior foi desativar os cálculos e os eventos... De 33s passou para apenas 6s e isso pode melhorar mais ainda eliminando os selects como bem disse em sua última dica, porém isso no momento não vou fazer porque preciso avaliar bem o código para não deixar nada inoperante. Agradeço imensamente a sua dica gratuita e sucesso ao seu canal!
MUITO TOP! Tenho uma planilha que em um PC ela roda meu código rapidinho, mas quando abrir em outro pc estava demorando uns 20seg pra gravar os dados da tela para a planilha, ao colocar esses códigos tá executando em 3seg. Show de bola. O link desse vídeo está salvo no código rsrsrs. valeu!
Show, professor, obrigado pela dica.
Opa, conta comigo.
Feliz em ajudar.
Um abraço😉
Ótimo para explicar. Bom professor. Sou fascinado por Excel
sensacional!!!, PARABÉNS POR COMPARTILHAR CONHECIMENTO
Que didática incrível! Fiquei muito surpreso com a ultima dica!
Que vídeo maravilhosoooo!!!! Obrigadaaaaa
Obrigado pelo feedback Dani.😉
Excelente!!
Irmão, BIZARRO o tempo que tu me salvou! MUITO obrigado! Tmj!
Feliz em ajudar Luccas. Abração!!!
Descobrir esse canal hoje de achei muito top demais
Muito boa explicação , eu só não soube fazer a eliminações do select no meu código. ainda sou iniciante
Show de Velocidade!🚀
Minha nossa, vc é demais, parabéns e muito obrigado
Obrigado Daniel. Feliz em ajudar!😉
Abs
Atualização de tela e Eventos eu já tirava, mas o calculo automático vai mudar muito minha planilha que é cheeeeia de fórmulas kkkk
Muito obrigado. Ganhou um inscrito
Sensacional.
Parabéns e obrigado pela dica.
Excelentes dicas, estou começando a aprender sobre VBA e essas suas dicas são top! Vou aplicá-las em um planilha que já estava me dando esse problema de tempo de execução e te dou um retorno!
Obrigado pelo feedback Suliano. Feliz em ajudar.
Um abs😉
Muito show
Sensacional! Adorei as dicas!!
Obrigado, feliz em ajudar Ewerton.
Um abs!😉
Sensacional!!! 👏👏
Vídeo muito bom
Ótima explicação. Parabéns!!. Você meu problema, porque minha planilha estava muito lenta por conta de macros. Obrigado!!!
Muito bom, valeu pela dica!
Essa foi show hem.
Obrigado Isac, feliz em ajudar. Abs.😉
Excelente
Sensacional !!!!... Ótima dica, valeu mesmo!!!!!👍👍👍👍
Obrigado! Ganhou mais um inscrito!
Cara vc é um mestre. Que didática maravilhosa para explicar. Muito obrigado!
Caramba!!! DICÃO!!! AULÃO!! Muito obrigado! Foi direto ao ponto e explicou muuuuuuito bem!
Incrível
Formidável!
cara, puta merda queria vc na minha vida QUE AULA rápida mas PRODUTIVA PRA KRL. Parece até que vc usou os truques pra fazer o vídeo tmb kkkk
por favor, estou com erro nessa linha Cells(Rows.Count, 13).End(xIUp).Offset(1, 0) = tempoFIM - tempoINI
e não aprece o calculo de tempo.
Perfeito
SHOW!
gênio
Excelente video, ganhou mais um inscrito. Obrigado por compartilhar seus conhecimentos e dicas
Feliz em ajudar Marcelo, e parabéns pelo interesse em aprimorar seus conhecimentos.
Abs
SHOWWWWWWW!!!!!
onde coloco isso em uma planilha já pronta?
Yeees!!!
É possível fazer o Excel abrir um software e dentro dele abrir as telas que eu preciso usar no dia dia ?
a dica é sensacional porem quando desabilito o calculo automático minhas contas não saem certas
Eu criei um banco de dados usando o Userform. Esses procedimentos deixariam o programa rodando mais leve?
Olá Eliezer.
É muito relativo o tamanho do ganho, pois depende muito do código que está utilizando.
Caso haja um loop, é mais provável que melhore a velocidade de execução.
Se houver "seleções" de células ao longo da macro, também pode haver um ganho na remoção dessas seleções.
Obrigado por acompanhar o canal.👍
Um abraço.😉
Muito boa a aula, professor! Gostaria de tirar uma dúvida se possível, teria como em quanto a macro rodar habilitar o cálculo manual apenas de uma aba específica da planilha, caso eu tenha várias abas contendo planilhas e uma referenciando a outra? Um forte abraço.
Muito obrigado! Dicas Sensacionais!!!! Porém eu ainda tenho problemas. Uso o Office 365 e, para formatar, preciso excluir cerca de 200 colunas de forma alternada dentro da planilha de dados (sem fórmula). O Excel demora cerca de 4 minutos para realizar a tarefa. tem alguma dica para este caso?
Olá Joanes, tudo bom?
Muito grato em ajudar.😉
Por favor, envia esse arquivo, deixa eu ver se podes melhorar alguma coisa nessas exclusões, uma vez que não há formulas acredito que poderia ser executado de modo mais rápido.
Quantas linhas estão ocupadas nesta tabela?
marcusrodello@excelonlinebrasil.com
Muito bom!!!
No trabalho tenho várias planilhas com Macros ... e uma coisa BEM CHATA é que, se incluo uma coluna ou linha, tenho que ir em todas as Macros e mudar as Matrizes!!! ... Alguma solução para isto?? ... Obrigado!!!
Feliz em ajudar.
Voce pode utilizar um codigo que vai identificar qual a ultima linha preenchida na coluna que especificar, por exemplo :
Range("a" & Rows.Count).end(xlUp).row
Abs😉
@@ExcelOnlineBrasil, linha nem é tão grave, já que dou sempre uma boa margem. No caso de coluna parece que achei uma solução. Ao invés de colocar a matriz no código, vou colocar automática numa célula e usar este código:
Application.Goto Reference:="INDIRECT(R1C9)" . Essa semana vou testar.
bom dia...
tem como fazer comparacoes entre duas cel na mesma lin e señdo ambas iguais selecionar a segunda com valor maior na mesma col ?
Olá WO.SANTANNA SANT"ANNA .
Desculpe, não consegui mentalizar corretamente a situação.
Você mencionou das células serem ambas iguais, porém depois disse de uma ter valor maior que a outra.
Pode exemplificar melhor por favor?
Um abraço.👍
@@ExcelOnlineBrasil
boa noite...
a minha ideia e copiar dados de uma lista criando uma nova .sem que tenha repeticoes na mesma linha... comparacoes dentro de uma plan
Professor, embora eu tenha utilizado todos os códigos abaixo para desabilitar a tela e a atualização de eventos durante a execução do código (reativei no final), a tela pisca ao final da execução da macro. Como resolver isso?
Sub Ordenar_TabelaCartao()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.EnableAnimations = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
shtTabelas.Activate
ActiveSheet.ListObjects("tblCartao").Range.Select
ActiveSheet.ListObjects("tblCartao").Sort.SortFields. _
Clear
ActiveSheet.ListObjects("tblCartao").Sort.SortFields. _
Add2 Key:=Range("tblCartao[SITUACAO]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, CustomOrder:="Em andamento,Encerrada", DataOption:= _
xlSortNormal
ActiveSheet.ListObjects("tblCartao").Sort.SortFields. _
Add2 Key:=Range("tblCartao[INICIO DO PAGAMENTO]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.ListObjects("tblCartao").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Call Renumerar_TabelaCartao
ActiveSheet.ListObjects("tblCartao").HeaderRowRange(1).Select
shtpainel.Activate
Range("Ano").Select
Application.DisplayStatusBar = True
Application.EnableEvents = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Application.EnableAnimations = True
Application.ScreenUpdating = True
End Sub
Sub Renumerar_TabelaCartao()
Dim linha As Integer
Dim conte As Integer
Dim vazio As Integer
linha = 5
conte = 1
shtTabelas.Activate
Cells(5, 25).Activate
Do Until shtTabelas.Cells(linha, "Y") = ""
If ActiveCell "" Then
shtTabelas.Cells(linha, "X") = conte
linha = linha + 1
conte = conte + 1
End If
ActiveCell.Offset(1, 0).Activate
Loop
End Sub
Muito bom, mesmo. Confesso que achei que em algumas das etapas, iria envolver arrays. Kkkkk
rs...boa pedida, arrays são poderosos, mas nem sempre são a melhor solução, nesse caso, foquei na performance sem complicar ;) Um abraço
Professor, esto quebrando a cabeça em classificar um combobox (A Z), já vi vários vídeos e não encontrei nada que desse resultado, na verdade um dos vídeos diz que por ter um laço em todos os itens ou linha demora um pouco, acaso tem alguma coisa que possa ajudar?
Onde está a origem deste combobox? Você popula ele via loop?
@@ExcelOnlineBrasil Sim por um loop
TotalItens = Controls(Objeto).ListCount - 1
For I = Inicio To TotalItens
For X = 1 To TotalItens
If Controls(Objeto).List(I) > Controls(Objeto).List(X) Then
Temp = Controls(Objeto).List(X)
Controls(Objeto).List(X) = Controls(Objeto).List(I)
Controls(Objeto).List(I) = Temp
End If
Next X
Next I
Exit Sub
Só que não funciona.
Olá pessoal :) Alguém sabe se macro pode dar bug no Excel? Meu formatar como tabela não funciona mais e nem a Microsoft conseguiu me ajudar, eu compartilho a conta com a minha irmã e o dela está normal. Obrigada.
Olá Aline. Já tentou remover o office, reiniciar a maquina e reinstalar? Ou efetuar a reparação da instalação? Isto pode ajudar.😉
Nunca vi uma macro causar problemas no excel, mas ja vi macros que por exemplo, desabilitavam a tecla "delete" por algum motivo, mas que depois quando nao era mais necessario desabilitar, o pessoal esquecia de remover o codigo. Aí fica parecendo um problema do excel, mas na verdade ele está apenas seguindo a programação.
👍
@@ExcelOnlineBrasil Olá,obrigada, tentei a reparação e não deu certo, mas vou tentar tirar o Office e instalar novamente, ouvi que também poderia ser porque eu instalei o Windows 11, vou tentar de tudo aqui rs. Muito obrigada pelo retorno 🙂.
Tinha uma base que demorava 2 minutos e meio pra rodar.
Agora está rodando em menos de 1 segundo kkkk
Excelente notícia Fernando. Obrigado pelo feedback. O céu é o limite no VBA.😉
Um abraço
coloquei os códigos e deu tela azul sksksksk que odiooo
Poxa vida Weslan.
Rapaz, uma tela azul na hora de testar um código é desanimador mesmo.
Mas é uma oportunidade para tentar novamente, e gerar mais aprendizado.
Continue com essa garra.
Abraço👍
Public Sub ControleGMA_BarraProgresso_FrmProgresso()
Dim Total As Long
Dim x As Long
Dim Largura As Long
Dim Percentual As Double
Total = 10000
With UserFormControleMCProgresso
Largura = .Lbl_Evolucao_FrmControleMCProgresso.Width
.Show
End With
For x = 1 To Total
Percentual = x / Total
With UserFormControleMCProgresso
.Lbl_Evolucao_FrmControleMCProgresso.Width = Percentual * Largura
.Lbl_Valor_FrmControleMCProgresso.Caption = Round(Percentual * 100, 1) & "%"
.Repaint ' Forçar a atualização da tela
DoEvents ' Permitir que a interface seja atualizada
End With
Next
Unload UserFormControleMCProgresso
End Sub