Evitar Repetir Códi...
 
Notifications
Clear all

Evitar Repetir Código para Todos TextBox

3 Posts
2 Usuários
0 Reactions
1,448 Visualizações
(@eliezer7)
Posts: 15
Active Member
Topic starter
 

Possuo o código abaixo que faz alguns bloqueios ao digitar em um TextBox, o problema é que isso precisa ser executado em vários TextBox(não em todos) e eu não queria ter que repetir o código em todos os TextBox, tem alguma maneira de deixar esse código no Modulo em uma SUB, e o KeyPress chamar o código pelo comando Call ? Dessa forma todos os textbox executariam o mesmo código. Alguem possui alguma orientação ?

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Permite que seja digitado "," apenas uma vez
If KeyAscii = 44 And InStr(UserForm1.TextBox1.Text, ",") <> 0 Then
KeyAscii = 0
End If

'Não permite letras e ponto.
If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 And KeyAscii <> 44 Then
KeyAscii = 0
End If

End Sub

 
Postado : 25/10/2014 3:07 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Vc pode manter esse código no textbox:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Numero(UserForm1.TextBox1.Text, KeyAscii) Then KeyAscii = 0
End Sub

A parte em vermelho vai ter que atualizar (Não sei se tem como padronizar isso tb)

E isto em um módulo:

Function Numero(ByVal texto As String, ByVal chave As String) As Boolean
'Permite que seja digitado "," apenas uma vez
If chave = 44 And InStr(texto, ",") <> 0 Then
chave = 0
End If

'Não permite letras e ponto.
If (chave < 48 Or chave > 57) And chave <> 8 And chave <> 44 Then
chave = 0
End If

If chave = 0 Then Numero = True

End Function

Abs

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 25/10/2014 3:33 pm
(@eliezer7)
Posts: 15
Active Member
Topic starter
 

Obrigado gtsalikis, funcionou direitinho.

Tem como me ajustar com a continualção desse código, eu inseri a parte abaixo na Function, para não deixar que eu digite mais de 2 casas após a virgula, o problema é que quando digito as 2 casas decimais ele não permite eu preencher mais nada, eu queria que permitisse caso o digito estivesse a esquerda da virgula, tem como ?

If InStr(Texto, ",") <> 0 And Len(Mid(Texto, InStr(Texto, ",") + 1, Len(Texto))) = 2 Then
chave = 0
End If

 
Postado : 25/10/2014 8:52 pm