Ir ao conteúdo
  • Cadastre-se

Ajuda - Somente Numeros TexBox AfterUpdate


Posts recomendados

Galerinha beleza?,

estou utilizando uma textbox onde a pessoa digita o id do cliente e assim que aperta enter ele procura e mostra os dados do cliente. Eu queria bloquear para que possa digitar apenas números mas como utilizo o comando afterupdate ele não esta aceitando.. alguém poder me da uma dica?

 



Private Sub txt_id_AfterUpdate()


If (txt_id.Text = 0) Then 'se ID for menor ou igual a 0
MsgBox "Código não Encontrado", vbCritical, Soft
txt_id.Enabled = True 'vai ativar o id
btn_img_pesq.Enabled = True 'vai ativar o botao pesquisa
txt_id.Text = ""
txt_id.SetFocus
End If


If (txt_id.Text <> "") Then 'se ID for diferente de nada
txt_id.Enabled = False 'vai desativar o id
btn_img_pesq.Enabled = False 'vai desativar o botao pesquisa
End If


Dim Linha As Long
Dim id As Long 'mudar para string se o id tiver letras ou símbolos
If Val(Me.txt_id) = 0 Then
Exit Sub
End If
Plan1.Activate
Linha = 2
id = txt_id
Do Until Cells(Linha, 1) = "" 'vai executar o laço até encontrar uma célula vazia
'Condição para localizar o registro
If Cells(Linha, 1) = id Then 'se encontrar o valor registro na célula pesquisada
opt_funcionario = Cells(Linha, 2)
opt_exfuncionario = Cells(Linha, 3)
opt_ativo = Cells(Linha, 4)
opt_inativo = Cells(Linha, 5)
txt_razao = Cells(Linha, 6)
txt_endereço1 = Cells(Linha, 7)
txt_bairro01 = Cells(Linha, 8)
txt_complemento = Cells(Linha, 9)
cmb_cidade01 = Cells(Linha, 10)
txt_cep01 = Cells(Linha, 11)
'cmb_uf01 = Cells(Linha, 12) 


Exit Sub 'interrompe o código quando encontrar o código e preencher os dados
End If
Linha = Linha + 1


Loop
'se o looping for executado até a última linha significa que o excel não encontrou o código na listagem
MsgBox "Código não Encontrado", vbCritical, Soft
txt_id.Enabled = True 'vai ativar o id
btn_img_pesq.Enabled = True 'vai ativar o botao pesquisa
txt_id.Text = ""
txt_id.SetFocus
End Sub

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Utilize o txt_id_Keypress para filtrar os caracteres, porque esse evento ocorre antes do afterupdate.
Toda vez que o seu usuário digitar uma tecla esse evento dispara e aí você pode tratar o valor do caractere
Detalhe:
Sugiro mudar a aassertiva abaixo:
If txt_id.Text = 0 Then...
Para:
If txt_id.Text = "0" Then...

O vba faz conversão implícita somente quando você 'seta' uma variável e não quando você avalia o valor da variável:
 

txt_id.Text = 123 ' o vba converte integer para stringMsgBox txt_id.Text ' exibe normalIf txt_id.Text = 123 then' não chega aquiEnd ifIf txt_id.Text = "123" ThenMsgBox "agora sim "End if
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...