Forzar que el foco PERMANEZCA en un control de un UserForm si no se cumplen ciertas condiciones.

En un TextBox de un UserForm llamado CIF_NIF_NIE le exijo mediante dos If, primero que el usuario escriba en él 9 caracteres -y que canta mediante un M;sgBox si se pretende abandonarlo sin completar tal número-, y segundo que no se escriban más de 9 caracteres -que a su vez canta mediante otro MsgBox si se pretende abandonar habiendo escrito más de esos 9 caracteres-.

Y ahí va la pregunta: ¿Cómo forzar que el foco no pase al siguiente control tabulado y por el contrario permanezca en él, y, además, situándose AL FINAL del texto incompleto o excedido?

Este es el código escrito en el control de marras:

If Len(CIF_NIF_NIE) < 9 Then MsgBox "Este campo exige que se introduzcan en él 9 caracteres.", vbExclamation
If Len(CIF_NIF_NIE) > 9 Then MsgBox "Este campo solo admite 9 caracteres.", vbExclamation

1 respuesta

Respuesta
1

Prueba con el evento Exit:

Private Sub CIF_NIF_NIE_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If Len(CIF_NIF_NIE) <> 9 Then
    MsgBox "Este campo exige que se introduzcan en él 9 caracteres.", vbExclamation
    Cancel = True
  End If
End Sub

[Sal u dos y no olvides la valoración.

Lo siento, Dante, me da error de compilación: "El uso de la propiedad no es válido", y el editor tras la aceptación del mensaje se me presenta sombreando en azul la línea "Cancel".

Te invito a SUSCRIBIRTE a mi canal de YouTube:

Excel y Macros

Ahí encontrarás más sobre Excel y Macros:


¿En dónde estás poniendo el código?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas