Página 1 de 1

TXTBOX QUE PERMITA NÚMEROS, EXCLUÍ TEXTO AUTOMÁTICAMENT

Enviado: 18 Out 2017 às 13:50
por AMORIM123
Salve galera do forúm

Galera estou com a seguinte questão:

Tenho o código a baixo que faz um controle do tipo de dados (apenas número) que entra no meu "txt_razao_social", não permitindo a entrada de texto, apenas números...
A questão é: Como posso aplicar a mesma condição do evento change para vários textbox ao envés de escrever um evento change para cada textbox.



Private Sub txt_razao_social_Change()

If Len(txt_razao_social) > 0 Then
tamanho = Len(txt_razao_social)
ultimo = Right(txt_razao_social, 1)
If Not IsNumeric(ultimo) Then
txt_razao_social = Left(txt_razao_social, tamanho - 1)

End If

End If


Desde já muito grato!

TXTBOX QUE PERMITA NÚMEROS, EXCLUÍ TEXTO AUTOMÁTICAMENT

Enviado: 18 Out 2017 às 14:04
por BokoMoko
O evento change é capturado objeto por objeto. A validação do txtbox é feita a posteriori da alteração.
Hoje em dia, o bom design de interface recomenda que a validação seja feita no formulário e não no campo. Assim, o usuário digita todos os campos, clica num botão de "gravar" e a validação então é feita em todos os campos e os alertas são enfileirados. Dessa forma o usuário conserta tudo de uma vez só, em vez de ficar validando campo a campo.
Fazendo assim, você facilita a migração da sua aplicação VBA desktop para a web.

Re: TXTBOX QUE PERMITA NÚMEROS, EXCLUÍ TEXTO AUTOMÁTICAMENT

Enviado: 18 Out 2017 às 15:36
por alexandrevba
Boa tarde!!

Uma forma seria...
Código: Selecionar todos
Public WithEvents NumericTextBox As MSForms.TextBox
Código: Selecionar todos
Private Sub TextBox1_Enter()
'Chamou a função NumericTextBox
    Set NumericTextBox = TextBox1
End Sub
Código: Selecionar todos
Private Sub TextBox2_Enter()
'Chamou a função NumericTextBox
    Set NumericTextBox = TextBox2
End Sub
Código: Selecionar todos
Private Sub TextBox3_Enter()
'Chamou a função NumericTextBox
    Set NumericTextBox = TextBox3
End Sub
Código: Selecionar todos
Private Sub NumericTextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case 48 To 57
        Exit Sub
         
    Case Else
        KeyAscii = 0
        MsgBox "Digite somente números.", 48, "Digite somente números."
        Exit Sub
    End Select
End Sub
Att

TXTBOX QUE PERMITA NÚMEROS, EXCLUÍ TEXTO AUTOMÁTICAMENT

Enviado: 18 Out 2017 às 17:48
por BokoMoko
Resolvido. Agora é só fazer com TODOS os textbox do formulário essa manobra aí.

Re: TXTBOX QUE PERMITA NÚMEROS, EXCLUÍ TEXTO AUTOMÁTICAMENT

Enviado: 18 Out 2017 às 23:19
por babdallas
Muito bom Alexandre. Não conhecia este WithEvents. Vou pesquisar a respeito.

TXTBOX QUE PERMITA NÚMEROS, EXCLUÍ TEXTO AUTOMÁTICAMENT

Enviado: 19 Out 2017 às 12:04
por AMORIM123
Caro alexandrevba muito bom..obrigado!

O MsgBox realça bem o que pode ser inserido no txtbox, muito legal!
Mas seria bom se ao envés do textbox o código apenas excluísse o caractere não permitido..
Não me atrevi a mexer no código, pois sou bem iniciante em vba, portanto agradeço se puder editar o código para excluí automaticamente o caractere não permitido

Att, gradecido!

TXTBOX QUE PERMITA NÚMEROS, EXCLUÍ TEXTO AUTOMÁTICAMENT

Enviado: 19 Out 2017 às 12:11
por gfranco
Realmente.Se foi o mestre alexandrevba que fez... bem poucos teriam a ousadia de mexer... eu? nem pensar!!!! mesmo que soubesse !!!!

Re: TXTBOX QUE PERMITA NÚMEROS, EXCLUÍ TEXTO AUTOMÁTICAMENT

Enviado: 19 Out 2017 às 15:08
por babdallas
Tente utilizar o evento Keypress, permitindo apenas os caracteres de 0 a 9 (keyascii entre asc(0) e asc(9)). Caso contrário, keyascii = 0.