Ir ao conteúdo
  • Cadastre-se
duducp

Ajuda - Somente Numeros TexBox AfterUpdate

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×