Notifications
Clear all

Exit que não funciona

15 Posts
4 Usuários
0 Reactions
2,014 Visualizações
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
Topic starter
 

Senhores,

Bom Dia!

Parece simples mas... não consegui resolver...

No arquivo anexo, existe na aba Menu, botões para se navegar entre as abas. Clicando-se no primeiro botão (CADASTRO), abre-se um formulário para cadastrar dados que serão inseridos na aba Cadastro. Esse formulário tem 6 textbox que só recebem valores. Em todos eles, coloquei no evento Exit de cada um, um comando Format para que quando o usuário sair do campo, o valor inserido seja automaticamente formatado para um valor.

O PROBLEMA: Quando se insere o valor no campo Último Ano do Frame Patrimônio Líquido e o valor no campo Último Ano do Frame Lucro Líquido, os comandos colocados no evento EXIT de cada um desses campos não está funcionando. Ou seja, não ficam formatados como valor, quando se tecla TAB para sair dos respectivos campos.

Alguém sabe o que está ocorrendo?

 
Postado : 20/11/2014 8:36 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
Topic starter
 

Mais um outro problema: Quando se clica no botão Editar desse mesmo formulário e se escolhe um item para Editar, a ordem de tabulação definida em tempo de design, através da propriedade TABINDEX, também não está funcionando. Ou seja, ao tentar se movimentar entre os campos com a tecla TAB, o sistema não obedece ao comando. Só consigo navegar entre os campos se for com o mouse.

 
Postado : 20/11/2014 8:41 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Wagner, quanto ao formatação, é meio estranho, pelo menos no teste que fiz aqui com o excel 2007 o problema foi resolvido alterando o Evento de Exit para AfterUpdate nestes dois controles.

Eu de inicio interpretei que no último controle o evento Exit não estava sendo interpretado pelo fato de estar indo para outro campo dentro do Frame, com isto anula o evento, se destacar com F9 nestes dois controles e seguir com o F8 verá que apos sair a rotina não é chamada, mas se sair e selecionar qualquer outro controle o evento entra em ação.

Faça o teste e veja se é isto:

Private Sub Txt_LL_ÚltimoAno_AfterUpdate()
    Txt_LL_ÚltimoAno.Text = Format(Txt_LL_ÚltimoAno.Text, "#,##0.00")
End Sub

Agora estou saindo para o almoço, e se der mais tarde vejo esta outra questão da navegação, por enquanto aguardaremos ajuda de outros colegas.

[]s

 
Postado : 20/11/2014 9:07 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
Topic starter
 

Beleza Mauro!

Muito obrigado. Funcionou!

Aguardo você ou outros colegas darem uma solução para o segundo problema.

 
Postado : 20/11/2014 9:49 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Wagner, tem coisas que eu sinceramente não acho explicação plausível quando se trata do VBA, olhei e analisei varias vezes para ver se encontrava alguma instrução em alguma parte que estivesse definindo ou cancelando, olhei todas as propriedades dos controles e do form e não encontrei nada, então me lembrei que uma vez tive um problema deste, e depois de tanto quebrar a cabeça, resolvi refazer o projeto.
Não se assuste, não vai ser o caso aqui, é mais simples, vamos lá :

Eu simplesmente deletei os controles e adicionei novos com os mesmos nomes, e a tabulação funcionou corretamente.
Faça isto em seu modelo e veja se da certo.

[]s

 
Postado : 20/11/2014 10:43 am
(@rlm)
Posts: 0
New Member
 

O relatado inicialmente, deve-se basicamente a que o controle estar "alocado" em um frame e ser o ultimo controle nesse frame, ao sair ocorre simultaneamente a saída do controle e frame, sendo que prevalece a deste ultimo, na pratica o evento exit do txt fica "em suspenso" (note que retornando ao campo a formatação se completa)então o melhor mesmo e utilizar outro evento (update ou afterupdate como a proposta do Mauro
Quanto ao tab, não notei problema. Naveguei entre os controles conforme o tabindex, não seria alguma configuração de teclado??

 
Postado : 20/11/2014 11:33 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Reinaldo, quanto ao eventeo exit, você está correto, eu só não achei as palavras corretas para descrever, quanto a segunda questão, você fez o teste no form para Editar ? Porque comigo neste formulário o Tab não funcionou corretamente.
Lembrando que usei o excel 2007 portable, pois no serviço só temos o 2003 ainda.

[]s

 
Postado : 20/11/2014 11:43 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Tentei no 2013, e o tab não funciona.

Mas também não sei dizer porque :/

 
Postado : 20/11/2014 11:55 am
(@rlm)
Posts: 0
New Member
 

Não tinha visto, me fixei no frm Cadastro.
É necessário alterar a propriedade TabStop dos controles que deseja passar a tabulação para True, estão como False, então é ignorado o Tab/passagem

 
Postado : 20/11/2014 12:40 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
Topic starter
 

Amigos Mauro, Reinaldo e gtsalikis,

Muito obrigado pela ajuda de vocês!

Mauro, você tem toda razão. Apagar os controles e refazer foi a solução para o problema da navegação com o TAB. Durma-se com um problema desses! Esse foi inédito para mim. Bom... vivendo e aprendendo!

Creio que isso ocorreu pela simples razão de que, por preguiça e não ter que reinventar a roda, eu simplesmente copiei e colei todos os controles do formulário Cadastro, no formulário de Edição, uma vez que ambos são praticamente iguais.

 
Postado : 20/11/2014 12:45 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Wagner, mas a resposta do Reinaldo serviu para compreender o que estava ocorrendo, abri novamente o arquivo e alterei as propriedades conforme ele passou de False para True, e funcionou corretamente, então retiro o que eu disse de não ter uma explicação plausível ou ser coisas do excel (VBA)
O importante é que além de resolvidos aprendemos mais uma.

[]s

 
Postado : 20/11/2014 12:53 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Amigos,

A título de curiosidade (já que o problema já está resolvido).

Eu tinha aberto o formulário, mexi em todos os Tabstops (tentei todos com True e todos com False). não deu resultado. Depois tentei mexer em todos os TabKeyBehavior (nenhum resultado). Também revi todos os tabindex, e ainda não tinha resultado. (Foi quando desisti).

Mauro e Reinaldo, vcs alteraram os tabstops e deu certo pra vcs? (No meu 2013 não resolveu).

 
Postado : 20/11/2014 1:19 pm
(@rlm)
Posts: 0
New Member
 

Sem alterar mais nada, somente TabStop dos objetos/controles desejados. Inclusive do Frame2 e 3; 2003/2007 e 2010 funcionam.

 
Postado : 20/11/2014 1:29 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

gtsalikis, alterei somente os TabStop sem mexer em mais nada.

 
Postado : 20/11/2014 1:35 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
Topic starter
 

Mais uma vez, obrigado a todos.

Realmente Reinaldo, bastou alterar a propriedade TabStop dos controles para que os mesmos funcionassem normalmente.

Não me ocorreu essa ideia antes porque eu nunca imaginei que pudesse essa propriedade estar alterada para False, pois eu não a modifiquei em nenhum dos controles, quando em tempo de design ou em tempo de run time.

Acho que o VBA alterou essa propriedade dos controles, quando eu fiz a colagem de todos os controles do formulário Cadastro para o formulário de Edição. Ou então, após a cópia de todos os controles para o formulário Edição, estando os mesmos ainda selecionados, posso, acidentalmente e sem perceber, ter alterado essa propriedade para False.

 
Postado : 20/11/2014 7:32 pm