Obligar a escribir en un textbox

Tengo un formulario con datos personales y aveces las personas encargadas de llenar estos formularios no escriben todos los datos, estoy tratado de adaptar este código para forzar a que escriban en todos los textbox, pero el archivo se me bloquea, agradezco la ayuda para ver si lo puedo echar a andar. Gracias.
Private Sub Text1_LostFocus()
If Text1.Text = "" Then
MsgBox ("No has escrito el numero de identificacion")
Text1.SetFocus
Else
End If
End Sub
Private Sub Text2_LostFocus()
If Text2.Text = "" Then
MsgBox ("No has escrito el primer nombre")
Text2.SetFocus
Else
End If
End Sub
Private Sub Text3_LostFocus()
If Text3.Text = "" Then
MsgBox ("No has escrito el primer apellido")
Text3.SetFocus
Else
End If
End Sub

1 respuesta

Respuesta
1
Al hacer la validación en el evento LostFocus de cada campo se presenta un loop (abrazo mortal) en el programa porque al perder el foco el Text1 lo obtiene el Text2, al ser nulo Text1 se quiere regresar el foco a Text1 pero como ya está en Text2 en ese momento realiza la validación de Text2 y como también es nulo se presenta el bloqueo.
Una buena manera es realizar la validación del campo anterior al obtener el foco del campo siguiente y así no hay problema para regresar el foco, se obliga al usuario a digitar la información y el programa no se bloquea.
Puede hacer este cambio y probar, se va a notar la diferencia:
 Private Sub Text2_GotFocus()
If Text1.Text = "" Then
MsgBox ("No has escrito el numero de identificacion")
Text1.SetFocus
Else
End If
End Sub
Private Sub Text3_GotFocus()
If Text2.Text = "" Then
MsgBox ("No has escrito el primer nombre")
Text2.SetFocus
Else
End If
End Sub
Private Sub Text4_GotFocus()
If Text3.Text = "" Then
MsgBox ("No has escrito el primer apellido")
Text3.SetFocus
Else
End If
End Sub 
Suerte !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas