Quando clico no Com...
 
Notifications
Clear all

Quando clico no CommandButton não faz nada

5 Posts
2 Usuários
0 Reactions
1,613 Visualizações
(@kaleo_rs)
Posts: 0
New Member
Topic starter
 

Boa noite, pessoal!

Criei um formulário com três campo do tipo TextBox, e para cada um deles exite um "Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)" que quando são preenchidos faz alguma coisa. Porém, ao clicar no CommandButton denominado "CONSULTA" não executa o comando, ao invés disso ele vai para o próximo TextBox como se tivesse teclado "ENTER".

Como faço para que isso não aconteça, ou seja, quando preencher o primeiro TextBox e clicar no CommandButton não vá para o próximo TextBox e sim execute o comando do botão.

 
Postado : 23/08/2017 6:23 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Kaleo_rs,

Bom dia!

Isso depende muito do código que está contido no evento Exit das suas caixas de texto. Assim, sem ver o arquivo, fica muito difícil fazer adivinhações... O melhor é você postar seu arquivo compactado com .ZIP aqui mesmo no fórum e explicar melhor qual é o resultado que espera.

A priori, o que deve está ocorrendo é que o VBA está tentando executar o código do evento Exit da caixa de texto assim que você clica no botão de comando pois o evento EXIT é disparado assim que o controle perde o foco. Ou seja: no momento que você clica no botão de comando, a caixa de texto perde o foco e dispara o evento EXIT.

 
Postado : 24/08/2017 4:25 am
(@kaleo_rs)
Posts: 0
New Member
Topic starter
 

Bom dia,

Segue em anexo o arquivo para avaliação.

Ao abrir o formulário, informe no campo DATA a data 23/08/17 sem as barras. Ao clicar no BOTÃO "CONSULTAR" neste momento DEVIRIA executar o comando do botão, porém ao clicar no BOTÃO vai para o próximo campo.

Preciso que ao clicar no botão não vá para o próximo e execute o comando do botão.

 
Postado : 24/08/2017 8:37 am
(@kaleo_rs)
Posts: 0
New Member
Topic starter
 

Kaleo_rs,

Bom dia, Wagner!

Será que você poderia avaliar o problema, encaminhei o arquivo em anexo.

 
Postado : 25/08/2017 7:57 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Kaleo_rs,

Boa tarde!

É como eu já havia lhe dito. Existe um código no evento EXIT da caixa de texto da data que faz a formatação da data, inserindo as barras nos números que são digitados na caixa de texto.

Desse modo, quando você clica no botão CONSULTAR, automaticamente o VBA "entende" que deve executar o código que está dentro do evento EXIT da caixa de texto, pois nesse momento, a caixa de texto perde o foco para o botão CONSULTAR e a prioridade de execução dada pelo VBA é para o Evento Exit do controle que possuía o foco.

O procedimento padrão dos usuários comuns para os aplicativos do Windows é o de digitar uma data e clicar em TAB para passar para o próximo campo e não já ir clicando num botão para consultar algo (até porque, enquanto você não sair da caixa de texto, ainda não existe data nenhuma. Só números).

Existe várias maneiras de você ajeitar isso (se não quiser deixar assim mesmo pois, ao meu ver, seu código não tem erro nenhum. Veja, o normal é digitar a data e teclar TAB. Assim funciona perfeitamente bem). Mas vamos lá... quais seriam as sugestões em caso de mudanças? Poderiam ser essas:
1 - Você pode tirar todo esse código do evento EXIT da caixa de texto e transferir para o botão CONSULTAR, no próprio evento Click do botão. Ou seja, quando o usuário digitar os números da data na caixa de texto e clicar no botão consultar, o primeiro código do evento clique do botão consultar será o código que transforma os números da caixa de texto em uma data e exibe a data formatada na caixa de texto. Essa é a primeira solução.
2 - Ao invés de usar uma caixa de texto para que o usuário digite os números da data e, como se trata de uma consulta que é realizada na planilha, você pode usar um ComboBox que, ao carregar o formulário (no evento Initialize do formulário) você carrega as datas para esse ComboBox, já formatadas como data, para que o usuário apenas escolha uma data para pesquisa.
3 - Você pode também utilizar, no lugar de uma caixa de texto ou de um ComboBox, um controle adicional da Microsoft que se chama DTPicker. Esse controle fornece um pequeno calendário quando o usuário clica nele e aí permite que o usuário escolha a data que quiser. Trata-se de um controle adicional que você pode instalar (se ainda não tiver instalado em sua máquina). Procure na internet que encontrará. Isso impedirá, inclusive, que o usuário cometa erros ao digitar a data de consulta. Você já pesnou, por exemplo, se o usuário digitar uma data inválida? Tipo 31/02/2017? Você já tratou isso no seu código? Ou se ele, por exempl, digitar número que não têm nada a ver com uma data, tipo 38/40/0000? E aí? seu código não dará erro?

Outra coisa, da próxima vez que colocar arquivos protegidos com senha (planilha ou o projeto VBA) aqui no fórum, por gentileza, forneça as senhas, pois muitas pessoas que poderiam ajudar, não ajudam por não saber como "quebrar a senha". Se bem que em se tratando de senhas no Excel ou no projeto VBA, são totalmente transparentes para o Calc do BROffice.

 
Postado : 26/08/2017 1:59 pm