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.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Postado : 26/08/2017 1:59 pm