Notifications
Clear all

Código TextBox Ativo/Selecionado

16 Posts
3 Usuários
0 Reactions
6,473 Visualizações
mdosmagos
(@mdosmagos)
Posts: 78
Trusted Member
Topic starter
 

Bom dia!

Tenho o seguinte código para simular uma tecla, em minha tela de pesquisa tenho somente 1 textbox, portanto ele atende o que preciso, porem tenho outro userform que tem vários textbox, e preciso usar essa tecla nele, o que preciso é o código do TextBox que está selecionado/ativo no momento, como seria esse código?

Private Sub L_0_Click()
Texto = Texto & "0"
TextBox1.Text = Texto
End Sub

Preciso:

Private Sub L_0_Click()
Texto = Texto & "0"
"CÓDIGO DO TEXTBOX ATIVO QUE PRECISO" = Texto
End Sub

desde já grato,

 
Postado : 28/04/2014 6:43 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

mdosmagos,

Bom Dia!

Para saber qual é o TextBox que está selecionado/ativo, você deve definir antes (em tempo de design) a propriedade TAG dos TextBox que vai trabalhar. Por Exemplo: para o TextBox1 (que você nomeou como Txt_Nome) você poderia atribuir a palavra "nome" a propriedade TAG desse TextBox e assim por diante para cada TextBox que irá trabalhar.

Sabendo quais são as TAG's de cada TextBox, você pode então colocar código nos eventos ENTER e EXIT dos TextBox de modo a modificar essas TAG's sempre que entrar ou sair de um TextBpx. Por Exemplo: quando sair do Txt_Nome, a propriedade TAG será atribuída com o valor "" (vazio). Quando entrar será atribuída com a palavra "nome". Desse modo, com a função IF você pode saber se o TextBox está ativo ou não e adotar a codificação que desejar.

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 : 28/04/2014 7:43 am
mdosmagos
(@mdosmagos)
Posts: 78
Trusted Member
Topic starter
 

Wagner Morel,

até entendi sua lógica, tentei fazer mas percebi que me falta conhecimento nos códigos, anexei o modelo que você tinha enviado para simular algumas teclas, foi de grande valia, me serviu, mas para essa nova questão, já te pedindo muito, teria como fazer somente o exemplo com uma tecla no arquivo em anexo? dai replico e adapto o que precisar.... acrescentei 3 textbox no seu exemplo....

Muito obrigado mesmo, desculpe o incomodo....

 
Postado : 28/04/2014 10:29 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

mdosmagos,

Bom Dia!

Infelizmente, não pude te ajudar. Tentei muitas vezes, todavia, o que eu achava que era muito fácil, na verdade, é muito complexo. O VBA não tem uma propriedade que nos informe qual é o objeto que tinha p último foco. Ele até tem propriedades como TAG, TABINDEX e ActiveControl. Todavia, como estamos trabalhando com botões de comandos (para as letras), sempre que se clica em uma letra, perde-se o foco da caixa de texto e não consegui identificar algo que me indicasse (após dar um clique em um objeto CommandButton), qual foi o último controle ativo (que no caso seria a caixa de texto onde se pretende digitar).

Sugiro você deixar essa demanda um pouco mais aberta para ver se nossos colegas "feras" em VBA, aqui do fórum, nos dão uma ajuda nesse caso. Caso não surja nenhuma contribuição, é bom dar por encerrada e abrir uma nova demanda, sendo mais específico e detalhista na explicação do que você deseja.

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 : 29/04/2014 7:39 am
mdosmagos
(@mdosmagos)
Posts: 78
Trusted Member
Topic starter
 

Wagner, foi a mesma conclusão que cheguei, consegui chegar ao ponto que falou, mas ele perde a seleção quando clico na letra simulada. Mas muito obrigado pelo seu empenho....
Se alguém saber de uma maneira para fazer isso ajuda ai...

 
Postado : 29/04/2014 7:45 am
mdosmagos
(@mdosmagos)
Posts: 78
Trusted Member
Topic starter
 

Vou ter que desistir, bati cabeça e não consegui.
Se alguém poder ajudar...

 
Postado : 29/04/2014 6:53 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eu não sei se entendi corretamente, alias tambem não entendi quando diz : "CÓDIGO DO TEXTBOX ATIVO QUE PRECISO" ? Está se referindo ao valor que foi inserido no Textbox ?

Mas vamos ver se ajuda :
Primeiro você disse que tem um formulário de Pesquisa com sómente um TextBox, então acredito que o mesmo estará ativo quando iniciar este formulário que chamarei de Userform1, que alem do Textbox1 temos um CommandButton1 que chamará o UserForm2 que contem um CommandButton:
No UserForm1 teriámos as seguintes instruções :

'UserForm1
Option Explicit

Public nameTextbox

Private Sub TextBox1_Enter()
    
    If Left(Me.ActiveControl.Name, 7) = "TextBox" Then
        'Nome do controle ativo
        MsgBox Me.ActiveControl.Name, vbOKOnly, "Meu nome é..."
        
        'Armazenamos o nome do controle atico na Variavel
        nameTextbox = Me.ActiveControl.Name
        
        'Adicionamos um valor para o Textbox ativo
        Controls(nameTextbox).Value = "Userform1 TextBox"
    
    End If
    
End Sub

Private Sub CommandButton1_Click()
'Chamamos o Userform2
    UserForm2.Show

End Sub

No UserForm2 as seguintes instruções:

'Userform2
Option Explicit

Dim nameTextbox

Private Sub CommandButton1_Click()
    
    'Controle ativo no Primeiro Formulário
    MsgBox UserForm1.nameTextbox
    
    'Damos outro Valor ao Controle ativo no Primeiro Formulário
    UserForm1.Controls(nameTextbox).Value = "Valor do Userform2"
    
End Sub

Ao iniciar o UserForm1 armazenamos o nome do controle atico TextBox1 na Variável que está como Publica e definimos um valor (texto), depois clicamos no Botãoi e abrimos o UserForm2, e clicamos no Botão, este mostrara a mensagem com o nome do controle ativo no UserForm1 e redefinirá o valor do mesmo.

Pelo menos acho que é isto que entendi.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/04/2014 9:28 pm
mdosmagos
(@mdosmagos)
Posts: 78
Trusted Member
Topic starter
 

Bom dia!

Estou mandando em anexo o arquivo com o meu userform, no caso o nome é frmCadastroStudents, o que preciso é:
Quando entro nele, clico em abrir para tornar o cadastro editável, as teclas simuladas na laterais (letras e números) estão direcionando o texto inserido sempre para o textbox "txtCliente", preciso que quando selecionar outro textbox o texto seja direcionado para ele, resumindo, preciso que quando clicar em uma das letras/números nas teclas laterais seja inserido no último textbox selecionado.

Vou dar mais uma tentada com o que me enviou... mas espero sua ajuda....

 
Postado : 30/04/2014 5:13 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

mdosmagos,

Ainda não desisti também. Tem uma pessoas que encontrei na Net que desenvolveu um TECLADO VIRTUAL. Todavia, esse teclado virtual que ele fez (muito bom, por sinal), utilizando módulo de classe, também só faz a inserção de texto em um único TextBox. Entrei em contato com ele por e-mail e ele está me orientando como fazer. Me deu uma primeira orientação mas ainda não deu certo. Vamos esperar que ele me responda outro e-mail que enviei hoje, com os erros apresentados, para que consigamos resolver esse problema.

Mauro,
O que o mdosmagos está querendo é utilizar um teclado virtual em sua aplicação. Desenvolvi um com algumas teclas de exemplo, utilizando botões de comando, para um TextBox e funcionou muito bem. Todavia, a necessidade dele envolve mais de um TextBox e é aí que a coisa começa a "pegar"! Porque quando se tem um só TextBox, consegue-se direcionar a ação do botão de comando digitado (no evento click do botão) para aquele único TextBox. Todavia, quando você tem mais de um TextBox para digitar, ao sair, por exemplo, de uma TextBox para o outro, você poderia até utilizar as propriedades TABINDEX ou TAG e também ActiveControl. Todavia, quando você clica novamente nas teclas (botões de comando) você perde o foco do TexBox que agora passa a ser o do próprio botão de comando teclado. É isso. Você teria alguma luz em cima disto?

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 : 30/04/2014 5:36 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Wagner, foi mais ou menos como eu entendi então, eu fiquei com um pouco de duvida quando ele citou outro formulário e a expressão "CÓDIGO DO TEXTBOX ATIVO QUE PRECISO" = Texto", esta ele não me explicou o que seri, se é o texto que foi digitado ou que código seria.
Eu havia baixado seu modelo de Teclado Virtual e é sensacional, e hoje o dia foi bem corrido pra mim no serviço, não tive folga por causa do feriado amanhã.
Resumindo, estou com visitas, e aguardando outros que veem de sampa, então estou fazendo um ajuste rapidinho utilizando a dica que dei que é utilizando o Evento Enter, então a questão de se mudar de textbox e captar em qual é o que está ativo já está resolvido, só estou analisando a questão do texto já digitado, por exemplo, como o texto digitado e armazenado na Variavel "Texto" ao se mudar de controle devemos limpar esta váriavel, ok, isto é simples, mas então pensei, e se eu resolver voltar ao texxtbox anterior, devo limpar o texto que já havia digitado ou continuar a digitação a partir do ultimo caracter.

De qualquer forma vou fazer mais uns ajustes e anexar como está ficando, e assim poderemos ir trabalhando junto, isto devido ao tempo, e lógico duas cabeças pensam melhor que uma.

abraços

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 30/04/2014 6:41 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Blz, Mauro. Vamos lá! Muito embora eu cheguei num ponto que não consegui mais raciocinar o que estava fazendo e parei. Essa questão que você tocou (voltar ao TextBox anterior) é importante também e eu nem havia pensado nessa possibilidade. Creio que nesse caso, teremos que ter uma variável Global para cada TextBox.

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 : 30/04/2014 9:21 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Blz, Mauro. Vamos lá! Muito embora eu cheguei num ponto que não consegui mais raciocinar o que estava fazendo e parei. Essa questão que você tocou (voltar ao TextBox anterior) é importante também e eu nem havia pensado nessa possibilidade. Creio que nesse caso, teremos que ter uma variável Global para cada TextBox.

Wagner, por hoje é isto, de uma olhada, faça alguns testes, e fique a vontade para alterar e/ou ajustar (aprimorar) as rotinas.
Teclado Virtual Excel

Encontrei um outro modelo bem interessante onde é montado o Teclado com controle em tempo de execução podendo alterar a linguagem do teclado onde as definições das teclas estão todos na planilha, com tempo dou uma estudada melhor no arquivo, baixe oo exemplo, alias no link para download abre uma pasta virtual com vários outros exemplos de arquivos em vba:
http://pedrowave.blogspot.com.es/2013/0 ... ional.html

No mais vamos nos falando.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 30/04/2014 11:05 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Mauro,

Fantástica sua solução! Beleza mesmo. Vivendo e aprendendo...

Isso só prova o que eu já sabia sobre as nossas participações em fóruns: Nada como várias cabeças pensando juntas, no mesmo problema, e desenvolvendo uma solução com conhecimentos compartilhados.

Obrigado pela ajuda.

Vi também esse teclado virtual que é montado em tempo de execução (run time). Muito boa também a solução.

mdosmagos,

Veja esse último arquivo disponibilizado pelo amigo Mauro Coutinho. Creio que ele atende plenamente a sua necessidade.

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 : 01/05/2014 6:37 am
mdosmagos
(@mdosmagos)
Posts: 78
Trusted Member
Topic starter
 

Boa tarde!

Mauro Coutinho, desculpe não ter te explicado corretamente.

Wagner e Mauro, muito obrigado mesmo pela ajuda que estão me dando, pela troca de conhecimento, com isso só crescemos.

Hoje adaptei tudo que o Mauro passou no arquivo dele para o modelo que preciso, está quase tudo perfeito, só esbarrei em dois erros em dois botões do meu cadastro de clientes, o botão EXCLUIR e o botão AVANÇAR, os dois param de funcionar devido a declaração da variável pública que o Mauro passou, tentei de tudo para tentar corrigir mas não consegui, conto com o conhecimento de vocês para tentar solucionar esse pequeno probleminha que ainda persiste, em anexo segue o meu modelo com a explicação do erro. Está tudo pronto, só falta isso :D

Grande abraço e aguardo a ajuda de vocês....

 
Postado : 02/05/2014 11:40 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não analisei todos os códigos, dá erro na planilha "orçamento" que não existe.

Quanto ao formulário "frmCadastroStudents", veja se é isto :
Primeiro na rotina :
Private Sub UserForm_Activate() - Adicione :
Sheets("Clientes").Select
Range("A2").Activate 'Selecionar o Range e ser o primeiro registro a ser carregado, uma vez que utiliza "activecell" na instrução a seguir.

Segundo : Adicione a Declaração apos a constante :
Const TxtInicial = "txtCliente"
Dim iTotalLinhas As Long

Terceiro : Apague a instrução "Cancel = True" : na rotina "Private Sub CmdExcluir_Click()"

Faça os testes e veja se é isto.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/05/2014 8:35 pm
Página 1 / 2