2010-08-18 39 views
7

Me gustaría ejecutar algún código cuando un usuario cierra un formulario usando el botón x en la esquina superior derecha de la ventana (tengo la carga de formulario cuando la hoja de cálculo de Excel se abre, y oculta Excel. Quiero salir de Excel una vez que el formulario está cerrado, o al menos mostrar Excel nuevamente para que el usuario pueda salir de él manualmente)Ejecutar código cuando el formulario está cerrado en VBA (Excel 2007)

Al mirar las propiedades del formulario, la propiedad Descargar no está presente, ni puedo descubrir cómo hacer una función que se ejecuta cuando el formulario está cerrado.

Desafortunadamente, codificar esto en VB no es una opción, debe ser VBA.

Conozco el código necesario para mostrar Excel o salir de inmediato, pero no cómo vincularlo al evento de descarga.

Respuesta

0

Puede usar Unload Me en VBA para cerrar un formulario. Simplemente ponga el código para cerrar Excel inmediatamente después de eso.

+1

Gracias, pero ¿cómo esto me permite ejecutar código cuando el usuario hace clic en el botón x? Tal vez no hice la pregunta clara, la editaré ahora. – Pixotic

+0

Oh veo, yo (incorrectamente) supuse que el usuario salía por medio de un clic en el botón de formulario, no en el botón x en la ventana. – Michael

0

intentar algo como esto: -

Private Sub Form1_FormClosing(sender as Object, e as FormClosingEventArgs) _ 
    Handles Form1.FormClosing 

    //Code you want to execute 

End Sub 
+0

Se generó un error, indicando _ es un carácter no válido. – Pixotic

+0

Debe haber un evento FormClosing que pueda seleccionar para su Formulario cuando esté mirando el código fuente. Aquí hay un enlace a un ejemplo: http://img385.imageshack.us/img385/3966/wat3am9.jpg – Daniel

+1

No hay evento FormClosing en UserForm (Excel VBA). – Xdg

10

Un colega fue capaz de proporcionar la respuesta, incluyendo ejemplo aquí para todos los demás

Private Sub userform_terminate() 

    'Code goes here 

End Sub 
+0

Tenga en cuenta que esto también se activa al ocultar un formulario. ¡Use la respuesta de MRS1367 si solo quiere capturar el botón de cerrar (x) en la esquina superior derecha! – OfficialBAMM

9

Puede utilizar QueryClose caso del formulario de usuario como sigue:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    If CloseMode = 0 Then 
     ' Your codes 
     ' Tip: If you want to prevent closing UserForm by Close (×) button in the right-top corner of the UserForm, just uncomment the following line: 
     ' Cancel = True 
    End If 
End Sub 

Puede al a fin de utilizar vbFormControlMenu así:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    If CloseMode = vbFormControlMenu Then 
     'Your code goes here 
    End If 
End Sub 
0
Private Sub Form_Unload(Cancel As Integer) 
    Dim msgRes As VbMsgBoxResult 
    msgRes = MsgBox("Exit form ?", vbYesNo) 
    If msgRes = vbYes Then 
     'optional code 
    ElseIf msgRes = vbNo Then 
     Cancel = True 
    End If 
End Sub 
+0

No está claro cómo esto proporciona una respuesta a la pregunta. Exponga esta respuesta para señalar el problema original y su solución particular. – theMayer

0

pude evitar que la forma se cierre cuando el botón X era clic utilizando los siguientes:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    Cancel = MsgBox("Please confirm cancellation", vbOKCancel + vbQuestion) = vbCancel 
End Sub 
Cuestiones relacionadas