Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
  • Avatar do usuário
  • Avatar do usuário
#27488
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!
#27490
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.
#27501
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
#27519
Muito bom Alexandre. Não conhecia este WithEvents. Vou pesquisar a respeito.
#27563
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!
#27564
Realmente.Se foi o mestre alexandrevba que fez... bem poucos teriam a ousadia de mexer... eu? nem pensar!!!! mesmo que soubesse !!!!
#27573
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.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord