Forzar que el foco permanezca en un control si el dato es erróneo.

En el evento AfterUpdate de un TextBox de UserForm indico que si -IF- el valor que se introduce en él cumple cierta condición no lo permita y que lo borre, ¿cómo fuerzo que el foco permanezca en él y no se desplace, como me ocurre en la actualidad, al siguiente punto de tabulación del UserForm pese al SetFocus que, en esa línea, le he escrito?

2 Respuestas

Respuesta
2

Hay varios modos de controlar contenido en un control TextBox.

Ejemplo 1: a medida que se va escribiendo. Evento KeyPress. Aquí se controla que solo sean valores numéricos.

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii < 48 Or KeyAscii > 57 Then
    KeyAscii = 0
    MsgBox "Error en el dato. Solo se aceptan valores numéricos."
    End If
End Sub

Ejemplo 2: al salir del control. Evento Exit. Se controla cualquier condición, en este ejemplo que el primer caracter coincida con el primer caracter de otro textbox:

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'control 
If Left(TextBox2, 1) <> Left(TextBox1, 1) Then
    MsgBox "Código incorrecto. El primer dígito debe coincidir con el del Cod.Cuenta"
    TextBox2 = ""
    Cancel = True
End If
End Sub

*Más sobre los eventos de los controles de un Userform en sección Manuales.

Por supuesto Elsa 

He colocado el Cancel=True y cambiado el código asociándolo al Exit, en lugar del AfterUpdate como estaba haciendo, y, BINGO!

¡Gracias!  : -)

Respuesta
2

Revisa el siguiente vídeo, ahí explico la validación del en el textbox y cómo controlarlo cuando cierras el userform.

https://youtu.be/ArZzLT6agS4 

Te invito a suscribirte a mi canal de YouTube para que te lleguen los avisos de mis nuevos vídeos.

Sal u dos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas