Comment obtenir le nom de la procédure ou de la fonction à l'exécution?

Est-il tout façon de retourner le nom d'une fonction ou d'une procédure au moment de l'exécution?

Je suis actuellement à la gestion des erreurs quelque chose comme ceci:

Sub foo()
Const proc_name as string = "foo"
On Error GoTo ErrHandler

    ' do stuff

ExitSub:
    Exit Sub
ErrHandler:
    ErrModule.ShowMessageBox "ModuleName",proc_name
    Resume ExitSub
End Sub

J'ai récemment vécu une de mes constantes mentir à moi après que j'ai mis à jour le nom d'une fonction, mais pas la valeur de la constante. Je veux retourner le nom de la procédure à mon gestionnaire d'erreur.

Je sais que je vais avoir à interagir avec les VBIDE.CodeModule objet à trouver. J'ai fait un peu de méta-programmation avec Microsoft Visual Basic pour Applications la bibliothèque, mais je n'ai pas eu de succès avec cette lors de l'exécution. Je n'ai pas mes précédentes tentatives, et avant que je creuse mes talons pour essayer encore une fois, je veux savoir si c'est même à distance possible.

Choses qui ne fonctionnent pas

  1. À l'aide de certains VBA intégré de la Bibliothèque pour accéder à la pile d'appel. Il n'existe pas.
  2. Mettre mon propre pile d'appel, en poussant et en sautant le nom d'une procédure à partir d'un tableau que je suis entrée et de sortie de chacun. Il faut quand même que je passe le proc nom d'ailleurs, comme une chaîne de caractères.
  3. Un outil tiers comme vbWatchDog. Cette ne travail, mais je ne peux pas utiliser un outil tiers pour ce projet.

Note

vbWatchdog semble le faire en accédant directement à la mémoire du noyau via les appels d'API.

source d'informationauteur RubberDuck