web-dev-qa-db-fra.com

Exécuter le code lorsque le formulaire est fermé dans VBA (Excel 2007)

Je souhaite exécuter du code lorsqu'un utilisateur ferme un formulaire à l’aide du bouton x situé dans le coin supérieur droit de la fenêtre (j’ai le chargement du formulaire lorsque la feuille de calcul Excel est ouverte et il masque Excel. formulaire est fermé, ou au moins afficher Excel à nouveau pour que l'utilisateur puisse le quitter manuellement)

En examinant les propriétés du formulaire, la propriété Unload n’est pas présente et je ne peux pas non plus comprendre comment créer une fonction qui s’exécute à la fermeture du formulaire.

Malheureusement, coder ceci dans VB n'est pas une option, ce doit être VBA.

Je suis conscient du code nécessaire pour afficher Excel ou le quitter, mais pas comment le lier à l'événement de déchargement.

12
Pixotic

Un collègue a été en mesure de donner la réponse, y compris un exemple pour tous les autres

Private Sub userform_terminate()

    'Code goes here

End Sub
15
Pixotic

Vous pouvez utiliser QueryClose event de l'objet UserForm comme suit:

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

Vous pouvez également utiliser vbFormControlMenu comme ceci:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        'Your code goes here
    End If
End Sub
12
MRS1367

Vous pouvez utiliser Unload Me dans VBA pour fermer un formulaire. Il suffit de mettre le code pour fermer Excel immédiatement après.

1
Michael
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
Lotfiction

J'ai pu empêcher la fermeture du formulaire lorsque le bouton X était cliqué en utilisant les éléments suivants:

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

essayez quelque chose comme ceci: -

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

    //Code you want to execute

End Sub
0
Daniel