La macro en modulo del adjunto, pretendo que me sirva a varios TextBox sin que cada TextBox tenga su macro por separado
Cada TextBox tien su evento Private Sub txtTelf1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) con solo llamada de la macro.
Porque si por casualidad tenemos 4 TextBox para telefono. esto encurta la edicio nd emacros y menos peso al libro. así mismo para fecha = 00-00-000 en que el guion se auto coloca a cada espacio predeterminado en la macro.
Puede servir tambien si necesito por ejemplo para 5 TextBox para solo números
Adjunto | Tamaño |
---|---|
![]() | 19.93 KB |
Hola JoaoM.
Cuando necesito una función o una macro para que se aplique sobre diferentes controles, lo que hago es pasarle como argumento a la función o macro ese control
Sí, los argumentos pueden ser cualqueir cosa, no sólo un valor, también puede ser un control.
En las llamadas al control, simplemente añade como argumento el control que realiza la llamada
Además, como estás utilizando en tu procedimiento KeyAscii, pues se lo tendrás qeu pasar también como argumento
En tu caso, podría quedar algo así :
Sub Sel_TextBox_necesitomas(mitxtbox As Control, ByVal KeyAscii As MSForms.ReturnInteger)
'Macro para varios TextBox
On Error Resume Next
valor = mitxtbox.Text
'2ª parte para insertar solo números
If Not (KeyAscii >= 48 And KeyAscii <= 57) Then
KeyAscii = 0 '<-- Esta linea borra la tecla presionada si no es número
MsgBox "Ingrese SOLO números en el campo", vbOKOnly + vbInformation, Title:="CARACTER NULO"
End If
'3ª parte Para colocacion del Guion cada 4 = 0000-0000000
Select Case Len(valor)
Case 4
mitxtbox.Text = mitxtbox.Text & "-"
End Select
If Len(valor) = 12 Then KeyAscii = 0: MsgBox "MAX permitido en Telfono 1, 2 y 3 12 dígitos": Exit Sub
End Sub
Desde el formulario, tienes que pasarle el control como argumento:
Private Sub txtTelf1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Call Sel_TextBox_necesitomas(Me.txtTelf1, KeyAscii ) 'el primer argumento es el control
End Sub
------
Ya sé Excel, pero necesito más.