Necesito saber que evento desencadena otro?

Al cerrar un formulario se desencadenan eventos previos

Exit (control) LostFocus (control) Unload (formulario) Deactivate (formulario) Close (formulario)

Como hago en un control al evento Exit saber si se produjo por un Close del formulario.

El objetivo es ejecutar validaciones a menos que el usuario haya decidido Salir.

1 respuesta

Respuesta

Supongo que habrá varias formas de hacerlo, pero yo te sugiero la siguiente si realmente es útil para ti.

En un Módulo Standard o en el del Formulario, pon ésta Función de Retardo:

Public Function EsperaUnPoco(NumSegundos As Variant)
On Error GoTo Err_EsperaUnpoco
Dim TiempoEspera As Variant, Inicio As Variant
TiempoEspera = NumSegundos
Inicio = Timer
Do While Timer < Inicio + TiempoEspera
DoEvents
Loop
Exit_EsperaUnpoco:
Exit Function
Err_EsperaUnpoco:
MsgBox Err.Number & " - " & Err.Description
Resume Exit_EsperaUnpoco
End Function

Al cerrar el Formulario >>

Private Sub BtnCierraForm_Click()
MsgBox "El control CxxxxxYYYY se pintará de Rojo"
Me.CxxxxxYYYY.BackColor = RGB(255, 0, 0)
Call EsperaUnPoco(5)

DoCmd.Close acForm, Me.Name

End Sub

Sobre ésta base me comentas como te ha ido.

Un saludo

Jacinto

Gracias por responder, pero no veo lo que necesito.

Tengo un control que hace una validación:

Private Sub fechaw_Exit(Cancel As Integer)
If nofechavalida(fechaw) Then
   MsgBox "No se puede ingresar movimiento en esta fecha.", vbCritical, "MES BLOQUEADO."
   Cancel = True
End If
End Sub
Lo que deseo es que si el usuario decide no hacer nada y salir, entonces el mensaje no aparezca. Algo así como:
If nofechavalida(fechaw) AND NOT (CLOSE_FORM) Then

Espero haber aclarado más mi pregunta.

Abdul: Estaba repasando preguntas pendientes y me ha salido ésta tuya.

Realmente ha sido un despiste y te ruego me disculpes.

Si aún no has resuelto el tema, lo retomamos. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas