Edicion de macro para que sirva a varios TextBox

2 envíos / 0 nuevos
Último envío
JoaoM
Imagen de JoaoM
Offline
última acción: Hace 1 año 3 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 15/12/2011 - 23:46
Puntos: 3040
Edicion de macro para que sirva a varios TextBox

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

AdjuntoTamaño
File libro1_necesitomas.xlsm19.93 KB

Etiquetas: 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 3 días 18 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
añade un argumento

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.txtTelf1KeyAscii ) 'el primer argumento es el control

End Sub

 

 

 

------
Ya sé Excel, pero necesito más.