Für eine sehr lange Zeit, wenn ich einen Fehler-Handler habe ich es berichten, welche Projekt, Modul und Prozedur der Fehler geworfen wurde. Ich habe dies immer erreicht, indem Sie einfach ihren Namen über Konstanten gespeichert. Ich weiß, dass Sie in einer Klasse den Namen programmgesteuert mit TypeName (Me) erhalten, aber das bringt mir offensichtlich nur eine von drei Informationen und nur, wenn ich nicht in einem "Standard" -Modul bin.Wie kann ich feststellen, in welchem Modul mein Code ausgeführt wird?
Ich habe kein wirklich großes Problem mit der Verwendung von Konstanten, es ist nur, dass Menschen sie nicht immer auf dem neuesten Stand halten, oder schlimmer, sie kopieren und einfügen und dann haben Sie den falschen Namen gemeldet usw. Also möchte ich einen Weg finden, die im Beispiel gezeigten Konstanten loszuwerden, ohne die Information zu verlieren.
Option Compare Binary
Option Explicit
Option Base 0
Option Private Module
Private Const m_strModuleName_c As String = "MyModule"
Private Sub Example()
Const strProcedureName_c As String = "Example"
On Error GoTo Err_Hnd
Exit_Proc:
On Error Resume Next
Exit Sub
Err_Hnd:
ErrorHandler.FormattedErrorMessage strProcedureName_c, m_strModuleName_c, _
Err.Description, Err.Source, Err.Number, Erl
Resume Exit_Proc
End Sub
Kennt jemand Möglichkeiten für den Code zu sagen, wo es ist? Wenn Sie es schlüssig nachweisen können, nicht getan werden, das ist eine Antwort zu :)
Edit:
ich auch weiß, dass der Projektname in Err.Source ist. Ich hatte gehofft, ich könnte es ohne Ausnahme für andere Zwecke bekommen. Wenn Sie sich gut auskennen, können wir das außerhalb des Bereichs der Frage definieren.
Mir ist auch bekannt, wie man die Fehlerzeile bekommt, aber diese Information ist natürlich nur ein wenig hilfreich, ohne Module.Procedure zu kennen.
Alle Antworten in diesem Thread waren gut und erkundeten gültige Techniken, obwohl mich keiner wirklich dorthin brachte, wo ich hin wollte. Ich akzeptierte das, was ich tat, weil es am nächsten kam, um das zu erreichen, was ich versuchte, und jemand sollte die Punkte bekommen. – Oorang