Ir ao conteúdo

Implementando barra de progresso em macro


naguall

Posts recomendados

Postado

  Criei uma rotina de demora um pouco para ser executada (aprox. 50segundos) e por isso achei interessante implementar uma barra de progresso. Pesquisei um pouco na internet e consegui criar o userform, mas agora estou me enrolando um pouco.

 

  A macro chama o user form assim:

 

BarraDeProgresso.show

 

mas eu queria que a barra fosse mostrada e a rotina continuasse a rodar, mas isso nao acontece. A macro pausa enquanto o userform esta em exibição e só volta a rodar quando eu fecho o userform.

 

Como faço para a macro continuar rodando sem que precise fechar o userform? (OBS: tentei usar o Goto no codigo do userform para voltar p sub que eu estava executando, mas nao consegui pois esse comando nao funciona para subs diferentes)

 

Abrçs

Postado

bem, não sei o tamanho e o que sua macro faz, mas...

qualquer processo a mais vai incrementar o tempo

 

pelo que eu percebi com minha planilha vários fatores podem incrementar o tempo de execução

 

vba não faz uso de múltiplos processadores,

então se o seu processador tem Hyper-Threading, desative caso não tenha algo mais importante que utilize, o vba em vez de utilizar 25% do processador vai usar 50% diminuindo o tempo de execução.

 

Formatações e formulas prejudicam o tempo mesmo com funções que desative o calculo automático.

 

sub nome()

Application.ScreenUpdating = False                                <<<<<<<<<  Congela a tela
Application.Calculation = xlCalculationManual                      <<<<<  Para os cálculos

.....

...código

.....

Application.Calculation = xlCalculationAutomatic  <<<<<,'libera os calculos
Application.ScreenUpdating = True                        <<<<<<<<<'descongela a tela

end sub

 

muitas das minhas macro eu transfiro os dados para uma área auxiliar onde a macro é executada e os dados são colados de volta quase tornando instantâneo o processo.

para se ter uma ideia tenho uma que se feita diretamente leva muito mais que 2 minutos"parei antes de concluir" na planilha auxiliar leva 3 segundos.

 

Certos procedimentos podem ser trocados por outros mais eficazes,

então o meu conselho é tentar diminuir o tempo que a macro leva para executar antes de incrementar mais ainda o tempo com outras funções.

 

SE mesmo assim quiser uma função de calculo do tempo imagino que seria melhor chamar um contador externo para não prejudicar o tempo de execução da macro. 

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!