web-dev-qa-db-fra.com

Fermer un formulaire utilisateur avec Unload Me ne fonctionne pas

J'ai besoin de fermer un formulaire utilisateur Excel à l'aide de VBA lorsqu'un utilisateur a cliqué sur un bouton d'envoi et que les opérations ont été effectuées.

Comment puis-je fermer un Userform de lui-même?

J'ai essayé ceci mais il renvoie une erreur 361.

Unload Me
23
Kian

Comme spécifié par la réponse du haut, j'ai utilisé ce qui suit dans le code derrière le contrôle du bouton.

Private Sub btnClose_Click()
    Unload Me
End Sub

Ce faisant, il ne tentera pas de décharger un contrôle, mais déchargera plutôt le formulaire utilisateur où réside le contrôle de bouton. Le mot-clé "Me" fait référence à l'objet de formulaire utilisateur même lorsqu'il est appelé à partir d'un contrôle du formulaire utilisateur. Si vous rencontrez des erreurs avec cette technique, il existe plusieurs raisons possibles.

  1. Vous pourriez entrer le code au mauvais endroit (comme un module séparé)

  2. Vous utilisez peut-être une version plus ancienne d'Office. J'utilise Office 2013. J'ai remarqué que VBA évolue avec le temps.

D'après mon expérience, l'utilisation de la méthode DoCmd .... est plus spécifique aux fonctionnalités de macro dans MS Access, mais n'est généralement pas utilisée dans Excel VBA.

Dans des conditions normales (hors de la boîte), le code ci-dessus devrait fonctionner correctement.

25
user4059073

Sans voir votre code complet, il est impossible de répondre avec certitude. L'erreur se produit généralement lorsque vous essayez de décharger un contrôle plutôt que le formulaire.

Assurez-vous que vous n'avez pas le "moi" entre parenthèses.

De plus, si vous pouviez publier le code complet pour le formulaire utilisateur, cela aiderait énormément.

11
SWa

Unload Me ne fonctionne que quand il est appelé depuis userform self. Si vous souhaitez fermer un formulaire à partir d'un autre code de module (ou userform), vous devez utiliser la fonction Unload + userformtoclose name.

J'espère que ça aide

4
Tomamais