Compartir a través de


Evento SubForm.Exit (Access)

El evento Exit se produce inmediatamente antes de que un control pierda el enfoque en favor de otro control del mismo formulario o informe.

Sintaxis

expresión. Salir (Cancelar)

Expresión Variable que representa un objeto SubForm .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
Cancel Obligatorio Integer Se establece en True para cancelar el evento.

Comentarios

Este evento no se aplica a las casillas de verificación, a los botones de opción ni a los botones de alternancia de un grupo de opciones. Sólo se aplica al grupo de opciones en sí.

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad OnExit en el nombre de la macro o en [procedimiento de evento].

Debido a que el evento Enter se produce antes de que el enfoque se desplaza a un control determinado, puede usar un ENTRAR macro o procedimiento de evento para mostrar instrucciones. Por ejemplo, puede usar una macro o procedimiento de evento para mostrar un cuadro pequeño de formulario o un mensaje que identifica el tipo de datos que contiene normalmente el control o que dé instrucciones sobre cómo usar el control.

El evento Exit se produce antes del evento LostFocus.

A diferencia del evento LostFocus, el evento Exit no se produce cuando un formulario pierde el enfoque. Por ejemplo, suponga que activa una casilla de verificación de un formulario y que luego hace clic en un informe. Los eventos Enter y GotFocus se producen cuando se activa la casilla de verificación. El evento LostFocus es el único que se produce al hacer clic en el informe. El evento Exit no se produce (porque el enfoque se está trasladando a otra ventana). Si activa de nuevo la casilla de verificación del formulario para traerlo al frente, se producirá el evento GotFocus, pero no el evento Enter (porque el control tenía el enfoque la última vez que el formulario estuvo activo). El evento Exit se producirá cuando haga clic en otro control del formulario.

Si desplaza el enfoque a un control de formulario que no lo tenía previamente, los eventos Exit y LostFocus del control que tenía el enfoque se producen antes que los eventos Enter y GotFocus del control que lo recibe.

Si usa el mouse para mover el enfoque de un control de un formulario principal a otro control de un subformulario del mismo (que no tenga ya el enfoque en el subformulario), se producirán los eventos siguientes:

  • Exit (para el control del formulario principal)
  • LostFocus (para el control del formulario principal)
  • Enter (para el control del subformulario)
  • Exit (para el control del subformulario que tenía el enfoque)
  • LostFocus (para el control del subformulario que tenía el enfoque)
  • Enter (para el control del subformulario al que se mueve el enfoque)
  • GotFocus (para el control del subformulario al que se mueve el enfoque)

Si el control al que se mueve en el subformulario tenía anteriormente el foco, no se produce ni su evento Enter ni su evento GotFocus , pero sí se produce el evento Enter para el control de subformulario. Si desplaza el enfoque de un control de un subformulario a un control del formulario principal, no se producirán los eventos Exit y LostFocus del control del subformulario, solo el evento Exit para el control del subformulario y los eventos Enter y GotFocus para el control del formulario principal.

Nota:

A menudo se usa el mouse o una tecla como Tab para mover el foco a otro control. Esto hace que se produzcan eventos de mouse o de teclado, además de los eventos abordados en este tema.

Ejemplo:

En el ejemplo siguiente, se adjuntan dos procedimientos de evento al cuadro de texto LastName . El procedimiento de evento Enter muestra un mensaje que especifica qué tipo de datos que el usuario puede escribir en el cuadro de texto. El procedimiento de evento Exit muestra un cuadro de diálogo que pregunta al usuario si desea guardar los cambios antes de desplazar el enfoque a otro control. Si el usuario hace clic en el botón Cancelar , el argumento Cancel se establece en True (1), que mueve el foco al cuadro de texto sin guardar los cambios. Si el usuario elige el botón Aceptar , los cambios se guardan y el foco se mueve a otro control.

Para probar el ejemplo, agregue el siguiente procedimiento de evento a un formulario que contenga un cuadro de texto denominado LastName.

Private Sub LastName_Enter() 
 MsgBox "Enter your last name." 
End Sub 
 
Private Sub LastName_Exit(Cancel As Integer) 
 Dim strMsg As String 
 
 strMsg = "You entered '" & Me!LastName _ 
 & "' as your last name." & _ 
 vbCrLf & "Is this correct?" 
 If MsgBox(strMsg, vbYesNo) = vbNo Then 
 Cancel = True ' Cancel exit. 
 Else 
 Exit Sub ' Save changes and exit. 
 End If 
End Sub

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.