Ir ao conteúdo
  • Cadastre-se

Excel Mensagem Aguarde igual parte inferior planilha


Posts recomendados

Alguém sabe como eu faço para que no userform Excel VBA apareça aquela mensagem que fica na parte inferior à direita da planilha do Excel que diz: "Aguarde....Processando"..... o motivo é que, ao marcar o meu formulário leva alguns segundos calculando e o formulário ocupa a tela inteira. Caso mostre que está processando, o usuário não irá clicar eu outros pontos.....

Link para o comentário
Compartilhar em outros sites

Boa tarde, Neri Schuck.

 

Você pode tentar usar o Splash Screen, que simula o processamento ou abertura do formulário.

Pode alterar a quantidade de tempo do mecanismo, para mais ou menos o tempo de seu cálculos.

 

Exemplo do código:

 

Private Sub UserForm_Initialize()
    Application.OnTime Now + TimeValue("00:00:05"), "FechaForm"
End Sub

Verifique se isto te ajuda😀.

LaerteB

Link para o comentário
Compartilhar em outros sites

Neri Schuck,

 

Entendi, você optar por um Label piscante, assim que você clicar ou executar uma comando para os seus cálculos o Label fica visível e começa a piscar o tempo que você estipular (nas propriedades do Caption do Label escreva o texto que quiser como ex. "Aguardando").

Abaixo o código para o Label piscante:

 

Option Explicit
Private Declare Function GetTickCount Lib "Kernel32" () As Long

Private Sub Piscando()

Dim tempo As Long
Dim t As Integer

For t = 1 To 20 'Numero de vezes que o "objeto" vai piscar

tempo = GetTickCount

If Me.Label1.ForeColor = Preto Then
Me.Label1.Visible = False

Else
Me.Label1.Visible = True

End If

DoEvents

Do While GetTickCount - tempo < 200 'Tempo de espera para proximo loop de 2 segundos
 
 Loop
 Next

 End Sub

Achei outra forma que talvez lhe sirva, vou passar o link para você analisar se é viável no seu projeto:

https://br.ccm.net/faq/4198-vba-mensagem-para-fazer-o-usuario-esperar

 

Veja se ajuda 😀.

 

LaerteB

Link para o comentário
Compartilhar em outros sites

Amigo vou ajustar.... mas atualmente com 400 clientes leva em torno de 40 segundos. Amanhã ou depois terá 500..600...clientes e o tempo terá que ser alterado manualmente. Exatamente isto que eu queria evitar pois a planilha fica com o usuário, e eu não acompanho a quantidade de clientes ... mas vou ver o que faço.

 

Abraço e obrigado por ajudar.

Link para o comentário
Compartilhar em outros sites

Neri Schuck,

 

Compreendo o que quer dizer, mas sem um parâmetro de seu projeto fica difícil saber o que é "calculando".

 

Para que fique melhor a visualização da sua situação precisamos de um modelo (pode ser um exemplo simples do seu projeto, com conteúdo fictício); com isso eu e outros poderão analisar e consequentemente ajudá-lo melhor.

Anexe um exemplo simples do seu problema.

Até.

LaerteB

 

Link para o comentário
Compartilhar em outros sites

Boa tarde, Neri Schuck.

 

Não esqueci do teu problema não.. ontem e hoje está uma correria, mas estou vendo o seu caso e

preciso de mais tempo para analisá-lo melhor...

Por isso neste final de semana vou olhar novamente o seu exemplo e se surgir uma solução coloco até terça

aqui OK..

 

Quem sabe se alguém tem uma solução para ti até lá né... quanto mais melhor...

 

Um ótimo final de semana.

 

LaerteB😁.

Link para o comentário
Compartilhar em outros sites

Mais uma alternativa seria a de usar a propriedade StatusBar, apesar de simplória e de não apresentar recursos tão elaborados...

 

No ponto em que vai iniciar o processamento demorado, insira algo como:

        Application.StatusBar = "AGUARDE PROCESSAMENTO... " 

 

E ao finalizá-lo, para voltar ao normal:

 

        Application.StatusBar = False

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Boa tarde, Neri Schuck.

 

Primeiramente coloquei no seu projeto (no Formulário) uma "Barra de Progresso" que enquanto
se efetua os cálculos a barra informa em porcentagem o tempo que está sendo concluído e no
final aparece uma msgbox informando que foi finalizado o processamento.

 

Alterei a localização dos códigos PopulaListBox, calculos, TotalPeriodo1, TotalPeriodo2 e
Variacao, colocando-os em um módulo "MóduloBarraProgresso" e comentei os blocos com esses
códigos no Formulário principal (qualquer coisa você pode retornar como estava, mas terá que alterar os códigos no botão "BtnAtualizar").

 

Não sei quanto tempo leva para calcular mais de 400 clientes no seu projeto original, neste
exemplo que enviou tive que acrescentar mais linhas, para conseguir ver o resultado da
"Barra de Progresso"; neste momento tem 600 linhas totais...

 

Outra coisa a ListView1 ficará reduzida no seu tamanho, enquanto estiver executando a
"Barra de Progresso", mas volta ao normal no final .

 

OBS: fiz uma pequena alteração no PopulaListBox2, pois criei um clone do PopulaListBox e comentei a

linha "Call calculos" (não apaguei o PopulaListBox e está funcionando com a linha "Call calculos"), está funcionando normalmente na Barra de Progresso, por ter colocado esta linha "Call calculos" dentro do código deste; se quiser que volte é só descomentar.

 

Espero que este tipo de barra de progresso lhe sirva no seu projeto; se quiser você pode tentar fazer o que o "Edson Luiz Branco" mencionou acima, que é um método mais simples.

 

Abaixo o arquivo com as alterações acima descritas:


Abraços

LaerteB😀

 

 

teste (2)Alterado- 2.rar

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Nao vi a planilha mas 400 linhas não é motivo para lentidao para demorar 40 segundos para processar dados de um formulario.

 

Na verdade 40 segundos em vba é uma viagem do Rio a Sao Paulo a Pé.

Ja vi planilhas com 50000 linhas serem processadas em 1 ou 2 segundos e nao me nao precisar ter um hardware estão potente para isso.

 

Não sei o que causa esta lentidão, mas precisa ser investigado o motivo.

 

Se o problema forem formulas é interssante rever as formulas, talvez usar VBA para realizar as contas.

 

Se o motivo for os calculos uma sugestão é passar para calculo manual e depois para automatico diretamente no codigo e quando terminar o trabalho um F9 vai calcular toda a planilha 

Link para o comentário
Compartilhar em outros sites

Vou dar uma rápida explicada da planilha, sem a necessidade de visualizar ela.

Tenho a opção de comparar os meses de um ano e de outro ano.

No ano 1 (tenho as opções de escolher 1 mês ou até 12 meses).  Igualmente será para o ano 2 para comparar com o primeiro.

 

1)A quantidade de cálculos é enorme, sendo que cada cliente tem os 24 meses lado-a-lado (2 anos dos comparativos)

2)Em cada mês (para cada cliente) tenho a opções de 5 tipos de seguros o que vai fazendo com que  a planilha fique pesada

3)Exemplo o mês Janeiro do primeiro ano: Usa o somase, comparando se o ano estiver marcado. Após isto ele tem que usar o somase para cada um dos 5 tipos de seguros (neste soma-se tem que ver o ano, mês, cliente, tipo de seguro).

 

Abaixo o calculo de Janeiro para um cliente. Isto se repete 24 vezes para cada cliente. (Multiplica por 400 clientes......!!!!)

=SE(Auxiliar!$B$52=VERDADEIRO;SE(Auxiliar!$B$46=VERDADEIRO;SOMASES(Dados!$G:$G;Dados!$B:$B;Auxiliar!$A$52;Dados!$C:$C;Auxiliar!$B$51;Dados!$D:$D;A2;Dados!$F:$F;Auxiliar!$A$46);0)+SE(Auxiliar!$B$47=VERDADEIRO;SOMASES(Dados!$G:$G;Dados!$B:$B;Auxiliar!$A$52;Dados!$C:$C;Auxiliar!$B$51;Dados!$D:$D;A2;Dados!$F:$F;Auxiliar!$A$47);0)+SE(Auxiliar!$B$48=VERDADEIRO;SOMASES(Dados!$G:$G;Dados!$B:$B;Auxiliar!$A$52;Dados!$C:$C;Auxiliar!$B$51;Dados!$D:$D;A2;Dados!$F:$F;Auxiliar!$A$48);0)+SE(Auxiliar!$B$49=VERDADEIRO;SOMASES(Dados!$G:$G;Dados!$B:$B;Auxiliar!$A$52;Dados!$C:$C;Auxiliar!$B$51;Dados!$D:$D;A2;Dados!$F:$F;Auxiliar!$A$49);0)+SE(Auxiliar!$B$50=VERDADEIRO;SOMASES(Dados!$G:$G;Dados!$B:$B;Auxiliar!$A$52;Dados!$C:$C;Auxiliar!$B$51;Dados!$D:$D;A2;Dados!$F:$F;Auxiliar!$A$50);0);0)

 

É bem complexo. Talvez tenha outra maneira de fazer este cálculo. Mas não sei como faria.

 

Mas sobre a postagem de cálculo manual...ele já está pois atualiza somente quando clico no botão "Atualizar"

 

 

 

Link para o comentário
Compartilhar em outros sites

A tabela Dinamica na Listview nao.

Penso que o ideal seria você apenas ocultar as guias que o usuario nao deva ter acesso, e liberar o acesso apenas a tabela dinamica ou ao que ele possa operar como formularios de impressão por exemplo.

 

Da ate para deixar as guias de forma que o usuario nem sabia de sua existencia.

 

Se você me perguntar se é seguro, isso depende do conhecimento do seu usuario e do qto ele é curioso.

 

 

Veja um exemplo de como o arquivo pode ser 

 

Nesta planilha tem 3 guias

Planilha 1 ele tem acesso 

Planilha 2 esta oculta e o usuario pode encontrar com facilidade

Planilha 3 ele nem sabe que existe.

 

exemplo planilha oculta.xlsx

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!