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.
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
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
Vous pouvez utiliser Unload Me
dans VBA pour fermer un formulaire. Il suffit de mettre le code pour fermer Excel immédiatement après.
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
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
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