C'est un peu en dehors de la portée de votre question, mais pour éviter tout risque de confusion pour les lecteurs qui sont de nouveau à VBA: End et End Sub ne sont pas les mêmes. Ils n'ont pas d'effectuer la même tâche.
End met un stop à l'exécution de code et vous devriez toujours utiliser Exit Sub (ou Exit Function, respectivement).
Fin s'arrête TOUTES les cours d'exécution. Bien que cela semble tentant de le faire également efface
globales et variables statiques. (source)
Lorsqu'il est exécuté, le End déclaration réinitialise allmodule les variables de niveau et de toutes les variables locales statiques dans allmodules. Afin de préserver la valeur de ces variables, utilisez la Stop déclaration de la place. Vous pouvez ensuite reprendre l'exécution tout en préservant la valeur de ces variables.
Note Le End déclaration s'arrête l'exécution de code brusquement, sans invoquer les Décharger, QueryUnload, ou mettre fin à un événement, ou tout autre code Visual Basic. Le Code que vous avez placé dans le Décharger, QueryUnload, et de mettre fin à des événements offorms andclass modules n'est pas exécutée. Les objets créés à partir des modules de classe sont détruits, les fichiers ouverts à l'aide de l'instruction Open sont fermés, et la mémoire utilisée par votre programme est libéré. Les références de l'objet tenu par d'autres programmes sont invalidés.
Ni End Sub et Exit Sub le même. End Sub ne peut pas être appelé de la même manière Exit Sub peut être, parce que le compilateur ne le permet pas.
Quitte immédiatement la Sous-procédure dans laquelle il apparaît.
L'exécution se poursuit avec l'instruction qui suit l'instruction qui
appelé le Sous procédure. Exit Sub peut être utilisé uniquement à l'intérieur d'un Sous
procédure.
De plus, et une fois que vous obtenez la sensation de la façon dont les procédures de travail, de toute évidence, End Sub n'efface pas toutes les variables globales. Mais il ne claire local (Dim avais) variables:
End Sub
Termine la définition de cette procédure.
Merci pour votre réponse, très instructif. Pouvez-vous préciser Return trop s'il vous plaît?
C'est un peu en dehors de la portée de votre question, mais pour éviter tout risque de confusion pour les lecteurs qui sont de nouveau à VBA:
End
etEnd Sub
ne sont pas les mêmes. Ils n'ont pas d'effectuer la même tâche.End
met un stop à l'exécution de code et vous devriez toujours utiliserExit Sub
(ouExit Function
, respectivement).Voir aussi la MSDN dox pour la La Déclaration De Fin
Ni
End Sub
etExit Sub
le même.End Sub
ne peut pas être appelé de la même manièreExit Sub
peut être, parce que le compilateur ne le permet pas.Ce nouveau signifie que vous avez à
Exit Sub
, qui est un parfaitement le fonctionnement juridique:De plus, et une fois que vous obtenez la sensation de la façon dont les procédures de travail, de toute évidence,
End Sub
n'efface pas toutes les variables globales. Mais il ne claire local (Dim avais) variables:Return
trop s'il vous plaît?OriginalL'auteur Vegard