Boa noite,
Queria criar uma rotina para verificar se o valor do textbox é numérico no evento change, só que a referencia "me" está dando erro, gostaria de saber se dá para referenciar de outra forma ou se tem um jeito melhor de fazer isso.
este é o código que usei:
Sub VERIFICA_NUMERICO()
If IsNumeric(Me.Value) Then
Me.Value = Replace(Me.Value, ".", ",")
Else
MsgBox (" DIGITE UM VALOR VÁLIDO ")
End If
End Sub
luisbarros,
O erro ocorre justamente porque o "ME" é uma referência direta ao UserForm (conteiner de controles) que possui o controle TextBox em questão.
Para referenciar controles contidos em um UserForm, você pode e deve usar a cláusula With, exemplo:
With Me 'Código dentro deste With, fazem referência direta ao UserForm With .TextBox1 'Código dentro deste With, fazem referência direta ao controle TextBox 'Código que faz uma verificação / analisa uma condição End Wtih End With
Imagine então, que dentro do seu UserForm, existam 1 ComboBox, 1 TextBox, 1 OptionButton e 1 CheckBox.
Para manipular cada controle sem ter de reescrever a referência ao UserForm, ficaria assim :
With Me 'Código dentro deste With, fazem referência direta ao UserForm 'Manipulamos o ComboBox With .ComboBox1 'Código dentro deste With, fazem referência direta ao controle ComboBox 'Código que faz uma verificação / analisa uma condição End Wtih 'Manipulamos o TextBox With .TextBox1 'Código dentro deste With, fazem referência direta ao controle TextBox 'Código que faz uma verificação / analisa uma condição End Wtih 'Manipulamos o OptionButton With .OptionButton1 'Código dentro deste With, fazem referência direta ao controle OptionButton 'Código que faz uma verificação / analisa uma condição End Wtih 'Manipulamos o CheckBox With .CheckBox1 'Código dentro deste With, fazem referência direta ao controle CheckBox 'Código que faz uma verificação / analisa uma condição End Wtih End With
Isso torna o código mais "limpo" e organizado.
Agora imagine ter de manipular muitos controles, tendo que referenciar o UserForm que os possui :
'Manipulamos o ComboBox With UserForm1.ComboBox1 'Código dentro deste With, fazem referência direta ao controle ComboBox 'Código que faz uma verificação / analisa uma condição End Wtih 'Manipulamos o TextBox With UserForm1.TextBox1 'Código dentro deste With, fazem referência direta ao controle TextBox 'Código que faz uma verificação / analisa uma condição End Wtih 'Manipulamos o OptionButton With UserForm1.OptionButton1 'Código dentro deste With, fazem referência direta ao controle OptionButton 'Código que faz uma verificação / analisa uma condição End Wtih 'Manipulamos o CheckBox With UserForm1.CheckBox1 'Código dentro deste With, fazem referência direta ao controle CheckBox 'Código que faz uma verificação / analisa uma condição End Wtih
No fim, o resultado será o mesmo, porém ao separar a manipulação de controles em blocos, fica fácil identificar possíveis erros / referências erradas, sem contar que o código fica mais limpo e fácil de entender / interpretar.
Aos colegas mais experientes, todo complemento, observação ou correção é sempre bem-vinda.
Espero ter ajudado.
Abs.
Saulo Robles
Entendi a ideia, mas eu queria fazer uma rotina que funcionasse em qualquer textbox a partir do evento change.
Entendi a ideia, mas eu queria fazer uma rotina que funcionasse em qualquer textbox a partir do evento change.
Luis, o que pretende pode-se conseguir utilizando os controles "Textbox Tempo de execução WithEvents" utilizando o Modulo de Classe, assim definimos em uma só ação para todos os controles tendo a possibilidade de usar um case e formatar conforme necessitarmos, a principio fiquie em duvida se quer só verificar se é numerico ou se quer formatar ja que citou o Replace.
Por enquanto, sugiro que e uma olhada nos links abaixo onde falo sobre o assunto e tem alguns exemplos de formatação, assim voce pode definir o que realmente precisa e chegamos a uma resposta objetiva, veja se consegue adaptar, senão é só retornar que auxiliamos.
Textbox Tempo de execução WithEvents
http://www.tomasvasquez.com.br/forum/vi ... =20&t=3901
Fomatar TextBox Eventos KeyPress e Change
http://www.tomasvasquez.com.br/forum/vi ... boozUaXtkY
Se pesquisar aqui no Forum, tambem já foi falado sobre o assunto, mas os anexos ainda estão indisponiveis, por isso indiquei os links acima
Espero que ajude.
[]s
Mauro Coutinho