Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

VBA EXCEL | Quando as Atualizações Demoram - Por que usar VBA para Medir o Tempo de Cálculo por Aba

EXCEL | Quando as Atualizações Demoram - Por que usar VBA para Medir o Tempo de Cálculo por Aba#ProgramaçãoGlobal #SQLAnalytics #ValoresNulos #QualidadeDados #AuditoriaDados #DataScience #IntegridadeDados #ValidaçãoDados #BusinessIntelligence #DadosFaltantes #AnáliseExploratória #DetecçãoAnomalias #ConformidadeDados #CiênciaDados #MetodologiaAnalítica #AnáliseDiagnóstica #IntegridadeInformação #ProfissionaisDados #NullValues


DOE UM CAFÉ


 Compre OS LIVROS DESTA SÉRIE 



Ao trabalhar com pastas de trabalho grandes e complexas, muitos profissionais percebem que o Excel “trava” ou demora para responder, mas não sabem onde reside o gargalo. O uso de VBA para medir o tempo de cálculo por aba permite transformar um problema subjetivo (“a planilha está lenta”) em um diagnóstico objetivo (“a aba XYZ consome 80% do tempo de atualização”). Isso muda completamente a forma como se analisa desempenho em ambientes corporativos, onde decisões baseadas em dados passam a substituir palpites.



Sub TesteTempoCalculoPorAba()

' Subrotina: TesteTempoCalculoPorAba
' Objetivo: Medir o tempo de cálculo de cada aba da pasta de trabalho,
' identificando quais abas consomem mais tempo (inclusive por
' links internos/externos, fórmulas pesadas etc.).
' Uso: Execute a macro e observe o resultado no Painel Imediato (Ctrl+G).
'

Dim ws As Worksheet ' Variável que representará cada aba da pasta
Dim tempoInicio As Double ' Marca o instante de início do cálculo da aba
Dim tempoTotal As Double ' Armazena o tempo total de cálculo da aba (em segundos)
Dim resultado As Collection ' Coleção para armazenar resultados por aba (opcional)
Dim item As Variant ' Iterador para percorrer a coleção de resultados

' Inicializa a coleção de resultados (organiza dados por aba)
Set resultado = New Collection

' Desativa atualizações de tela para melhorar desempenho da medição
Application.ScreenUpdating = False

' Define o modo de cálculo manual para evitar recalculos automáticos
' durante a execução e focar apenas na execução de Application.Calculate
Application.Calculation = xlManual

' Inicia o loop por todas as planilhas da pasta de trabalho
For Each ws In ThisWorkbook.Worksheets

' Ativa a aba atual para garantir que o cálculo reflita o contexto da aba
' (alguns recursos como gráficos podem ser sensíveis à aba ativa)
ws.Activate

' Registra o momento de início do cálculo
tempoInicio = Timer()

' Força o cálculo de toda a pasta de trabalho
' (se quiser calcular apenas a aba atual, use ws.Calculate)
Application.Calculate

' Calcula o tempo consumido apenas para esta aba
tempoTotal = Timer() - tempoInicio

' Exibe o resultado no Painel Imediato (Ctrl+G)
Debug.Print "Aba: " & ws.Name & " - Tempo de cálculo: " & _
Round(tempoTotal, 4) & " segundos"

' Opcional: armazena resultado em uma coleção para uso posterior
' (ex.: gerar relatório em uma planilha)
resultado.Add Array(ws.Name, tempoTotal)

Next ws

' Opcional: exibir resumo em caixa de mensagem ao final
Dim tempoTotalMacro As Double
tempoTotalMacro = Timer() - tempoInicio

MsgBox "Medição concluída!" & vbCrLf & _
"Acesse o Painel Imediato (Ctrl+G) para ver o tempo de cada aba." & vbCrLf & _
"Tempo total aproximado da macro: " & Round(tempoTotalMacro, 4) & " segundos", _
vbInformation, "Medição de Tempo de Cálculo"

' Restaura o modo de cálculo automático
Application.Calculation = xlAutomatic

' Habilita novamente a atualização de tela
Application.ScreenUpdating = True

' Limpa variáveis de objeto
Set resultado = Nothing
End Sub


O código apresentado força o modo de cálculo manual (Application.Calculation = xlManual) e utiliza a função Timer() para registrar o momento antes e depois do cálculo de cada aba. Ao iterar com For Each ws In ThisWorkbook.Worksheets, temos a capacidade de isolar o impacto de cada planilha, incluindo fórmulas, tabelas dinâmicas e links internos/externos, na performance geral. Esse método é simples, mas extremamente eficaz, pois permite rastrear o tempo consumido por aba sem necessidade de ferramentas externas.


Além da medição bruta do tempo, o uso de Debug.Print para exibir o nome da aba e o tempo de cálculo em segundos cria um registro auditável dentro do próprio ambiente do Excel. Esse tipo de logging é essencial em ambientes corporativos, onde é necessário justificar decisões de refatoração, como a remoção de fórmulas pesadas ou a migração de links externos para Power Query. Ao identificar com precisão qual aba está sobrecarregando o cálculo, a equipe pode priorizar esforços e evitar retrabalho em áreas que não são críticas.


DESTAQUE!
TODOS OS ARTIGOS ATÉ DEZEMBRO 25


Outra vantagem desse código é a sua flexibilidade. Com pequenas alterações, é possível adaptá‑lo para usar ws.Calculate em vez de Application.Calculate, focando apenas na aba atual, ou até mesmo gravar os resultados diretamente em uma planilha de resumo. Essa adaptabilidade torna o código uma base ideal para diagnósticos mais complexos, como monitoramento de performance em múltiplas pastas de trabalho ou integração com relatórios automáticos de saúde do modelo. Em ambientes onde o Excel é usado como plataforma de BI simples, essa capacidade de automação é inestimável.


Do ponto de vista de boas práticas, o código também demonstra técnicas importantes de otimização de macros, como desativar a atualização de tela (Application.ScreenUpdating = False) e restaurar o estado de cálculo após a execução. Esses ajustes garantem que o próprio processo de medição não interferisse nos resultados, ao mesmo tempo em que evitam travamentos visuais durante a execução. Essas práticas são fundamentais para qualquer VBA que interaja com grandes volumes de dados ou processos intensivos.


Em resumo, o uso desse código VBA para medir o tempo de cálculo por aba não é apenas sobre “fazer a macro girar mais rápido”. É sobre transformar visibilidade em controle: identificar o gargalo, justificar mudanças técnicas e propor soluções sustentáveis. Em um blog dedicado exclusivamente a VBA, esse tipo de abordagem é central, pois mostra como a automação pode ser usada não apenas para executar tarefas, mas para otimizar e profissionalizar o uso do Excel dentro de grandes organizações.


Agora adapte o código abaixo para gravar o resultado direto em uma nova aba de resumo chamada Status em DDD-MM-AAAA, a qual deve ser acrescentada a cada atualização (por exemplo, coluna A = nome da aba, coluna B = tempo de cálculo).


👉 Siga André Bernardes no LinkedinClique aqui e contate-me via What's App.

Comente e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com


 

 Compre OS LIVROS DESTA SÉRIE 


 Série Donut Project 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes


eBook - PT - Série DONUT PROJECT - Volume 07 - VBA TOP 50 Códigos Mais Importantes - Access — André Luiz BernardeseBook - PT - Série DONUT PROJECT - Volume 07 - VBA TOP 50 Códigos Mais Importantes - Excel — André Luiz Bernardes eBook - PT - Série DONUT PROJECT - Volume 07 - VBA TOP 50 Códigos Mais Importantes - Outlook — André Luiz Bernardes 

eBook - PT - Série DONUT PROJECT - Volume 08 - VBA TOP 50 Códigos Mais Importantes - Project — André Luiz Bernardes  eBook - PT - Série DONUT PROJECT - Volume 08 - VBA TOP 50 Códigos Mais Importantes - Project — André Luiz Bernardes  eBook - PT - Série DONUT PROJECT - Volume 08 - VBA TOP 50 Códigos Mais Importantes - Word — André Luiz Bernardes

Open Source: O Coração Invisível da Internet Mantido por Voluntários Não Remunerados

Open Source: O Coração Invisível da Internet Mantido por Voluntários Não Remunerados
#ProgramaçãoGlobal #CibersegurancaGlobal #CodigoCritido #ComunidadeOpenSource #DesenvolvimentoSoftware #GithubCommunit #Infraestrutura #InovacaoTecnologica #OpenSourceSecurity #SoftwareLivre #TSMC #Samsung #Intel #ASML #EUV


DOE UM CAFÉ


 Compre OS LIVROS DESTA SÉRIE 



VULNERABILIDADES ESTRUTURAIS NA INFRAESTRUTURA CRÍTICA DIGITAL GLOBAL: ANÁLISE DE DEPENDÊNCIAS SISTÊMICAS E RISCOS ASSOCIADOS


Aproximadamente 70 por cento da internet moderna funciona através de software open source mantido parcial ou integralmente por voluntários sem remuneração, conforme citado no artigo original. Este modelo econômico singular — onde criação de valor crítico não é compensada no mercado — criou realidade paradoxal: A infraestrutura mais importante da civilização digital é mantida de graça, no tempo livre de desenvolvedores. A sustentabilidade deste modelo permanece profundamente questionável.


O curl, ferramenta de linha de comando para transferência de dados, é utilizado em aproximadamente 10 bilhões de dispositivos globalmente, desde smartphones até servidores em data centers. Este software crítico é mantido essencialmente por um único desenvolvedor — Daniel Stenberg — que começou o projeto em 1996. Sua dedicação por quase 30 anos criou infraestrutura que suporta transações de trilhões de dólares, contudo Stenberg trabalha fundamentalmente como voluntário, sustentado por doações e patrocínios corporativos esporádicos.


O Bash, shell de linha de comando predominante em sistemas Unix e Linux, foi mantido principalmente por Chet Ramey, programador sênior em Ohio, durante 30 anos. Ramey documentou em entrevistas, que manteve o Bash paralelamente a trabalhos remunerados, dedicando tempo pessoal a correções de bugs e melhorias. Este padrão — um desenvolvedor crítico mantendo componente essencial de infraestrutura mundial — é padrão predominante, não exceção, no ecossistema open source.


O GitHub, plataforma de hospedagem de código, relata que existem aproximadamente 100 milhões de repositórios públicos globalmente, dos quais estimados 95 por cento são mantidos por desenvolvedores que não recebem compensação financeira direta. Muitos destes repositórios são críticos para operação de sistemas essenciais. A vulnerabilidade criada por este modelo é extraordinária — se voluntários-chave desistirem ou ficarem indisponíveis, componentes críticos da internet deixariam de receber manutenção.

Sim, nós sabemos, nós sabemos, nós sabemos…


Ver essa mensagem é irritante. Sabemos disso. (Imagine como é escrevê-la...). Mas também é extremamente importante. Um dos maiores trunfos do ✔ Brazil SFE® é seu modelo parcialmente financiado pelos leitores. 


1. O financiamento dos leitores significa que podemos cobrir o que quisermos. Não sujeitos a caprichos de um proprietário bilionário. Ninguém pode nos dizer o que não dizer ou o que não reportar.


2. O financiamento dos leitores significa que não precisamos correr atrás de cliques e tráfego. Não buscamos desesperadamente a sua atenção por si só: buscamos as histórias que nossa equipe editorial considera importantes e que merecem o seu tempo.


3. O financiamento dos leitores significa que podemos manter nosso blog aberto, permitindo que o maior número possível de pessoas leia artigos de qualidade do mundo todo.


O apoio de leitores como você torna tudo isso possível. No momento, apenas 2,4% dos nossos leitores regulares ajudam a financiar nosso trabalho. Se você quer ajudar a proteger nossa independência editorial, considere juntar-se a nós hoje mesmo.


Valorizamos qualquer quantia que possa nos dar, mas apoiar mensalmente é o que causa maior impacto, permitindo um investimento maior em nosso trabalho mais crucial e destemido, assim esperamos que considere apoiar-nos. Obrigado!

👉 Siga André Bernardes no LinkedinClique aqui e contate-me via What's App.

Comente e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com


 

 Compre OS LIVROS DESTA SÉRIE 

 Série Donut Project 
DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes


eBook - PT - Série DONUT PROJECT - Volume 07 - VBA TOP 50 Códigos Mais Importantes - Access — André Luiz BernardeseBook - PT - Série DONUT PROJECT - Volume 07 - VBA TOP 50 Códigos Mais Importantes - Excel — André Luiz Bernardes eBook - PT - Série DONUT PROJECT - Volume 07 - VBA TOP 50 Códigos Mais Importantes - Outlook — André Luiz Bernardes eBook - PT - Série DONUT PROJECT - Volume 08 - VBA TOP 50 Códigos Mais Importantes - Project — André Luiz Bernardes  eBook - PT - Série DONUT PROJECT - Volume 08 - VBA TOP 50 Códigos Mais Importantes - Project — André Luiz Bernardes  eBook - PT - Série DONUT PROJECT - Volume 08 - VBA TOP 50 Códigos Mais Importantes - Word — André Luiz Bernardes
diHITT - Notícias