2
respostas

Solução para não precisar clicar o botão duas vezes

Dei uma olhada na internet e vi que o Visual Basic tem a opção de utilizar o comando "Sleep", isto não seria uma solução para o problema de ter que clicar o botão duas vezes? O que eu imagino seria: primeiro o comando para atualizar a consulta de compras, colocar o comando sleep e depois continuar com o comando de atualizar tudo.

Eu tinha visto a opção de colocar o comando Sleep aqui: https://stackoverflow.com/questions/95112/how-do-i-delay-code-execution-in-visual-basic-vb6

Resolvi vir perguntar aqui por que não entendi as soluções propostas em sua totalidade. Também temos a opção de no propio código fazer essa atualização duas vezes, assim podemos eliminar a possibilidade de erro humano quando o botão for utilizado.

As minhas soluções são validas?

2 respostas

Olá, Christopher! Você está correto, o comando Sleep pode ser usado em Visual Basic para pausar a execução do código por um período de tempo especificado. Isso pode ser útil em situações onde você precisa esperar que uma operação seja concluída antes de prosseguir.

No entanto, é importante notar que o uso do Sleep pode ter implicações no desempenho e na responsividade do seu aplicativo. Durante o período de Sleep, a thread atual é bloqueada e não pode responder a eventos ou realizar outras ações. Portanto, embora possa resolver o problema de ter que clicar duas vezes no botão, pode não ser a solução ideal dependendo do contexto.

Quanto à sua sugestão de atualizar duas vezes no próprio código, isso pode funcionar dependendo de como o código está estruturado. No entanto, isso também pode ter implicações de desempenho, pois você estaria efetivamente duplicando a quantidade de trabalho que o código precisa fazer.

Em geral, a melhor solução dependerá das especificidades do seu código e do comportamento que você deseja alcançar. Se você puder fornecer mais detalhes sobre o problema, eu poderia ser capaz de oferecer uma orientação mais específica.

https://www.automateexcel.com/pt/vba/funcoes-wait-sleep-pausa-atraso/

https://stackoverflow.com/questions/6191643/sleep-function-visual-basic

Aproveitando a discussão provocada pelo tópico criado pelo colega, trago aqui uma dúvida/sugestão que eu trouxe em outro tópico aqui do fórum: (https://cursos.alura.com.br/forum/topico-duvida-configurando-a-macro-para-utilizar-o-comando-activeworkbook-refreshall-2-vezes-374082)

"eu fiz o seguinte código:

ActiveWorkbook.RefreshAll Application.Wait Now + TimeValue("00:00:08") ActiveWorkbook.RefreshAll

O meu objetivo é que após 8 segundos ao primeiro refresh all, fosse executado novamente o refresh all. Dessa forma, eu pretendia obter o mesmo efeito do que dar dois cliques no botão (como o professor fez na aula).

O código funcionou, mas somente a consulta é atualizada, enquanto a tabela dinâmica (e, consequentemente, os gráficos) permanecem inalterados.

Existe alguma forma de escrever o código para que existam dois comandos para atualizar tudo, sendo que a segunda atualização somente ocorra após a conclusão da primeira?"