Wäre es möglich, die CallStack
in VBA für MS Access 2003 zu sehen? Das heißt, wäre es möglich zu sehen, von welchem procedure
oder function
ein anderer function
genannt wurde?So überprüfen Sie die Anrufliste
Antwort
Es gibt keinen programmatischen Weg in VBA, um den Call Stack zu sehen, den ich kenne. Die übliche Lösung für dieses Problem ist, eine Struktur zu verwenden, um das Aufrufen von Funktionen zu verfolgen, aber es erscheint mir immer wie ein Kludn, und wirklich nur beim Programmieren (nicht zur Laufzeit), in diesem Fall scheint es mir, dass die VBE's eingebaute Fähigkeit, um den Call-Stack zu sehen, ist ausreichend.
Und, BTW, ich habe immer die Aufruf-Schaltfläche auf meiner VBE-Symbolleiste, da es eine der am häufigsten verwendeten Funktionen für mich ist. Ich füge auch die Kompilierschaltfläche hinzu - ich denke, es ist verrückt, dass es standardmäßig nicht in der Werkzeugleiste ist, da es Leute dazu ermutigt, zu programmieren, ohne jemals eine Kompilierung zu erzwingen. Außerdem hat Access 2000 Option Option Explicit nicht standardmäßig verwendet (angeblich aus Gründen der Konsistenz mit den anderen Apps, die das VBE verwenden - d. H. Access herunterfahren, um es mit Apps in Einklang zu bringen, die nicht annähernd so schwer).
Aber ich schweife ab ...
Zur Laufzeit, Ansicht Menü -> Call Stack (oder drücken Sie STRG + L).
Schließlich einen optionalen Parameter an die Funktion hinzufügen, und übergeben der Anrufer auf diese Weise nennen. Für Formulare können Sie Me.Name
als Parameter verwenden.
Ja, es ist möglich, aber es ist nicht sehr nützlich!
Private Declare Sub SetMode Lib "vba332.dll" Alias "EbSetMode" (ByVal lngMode As Long)
Private Declare Function GetCallStackCount Lib "vba332.dll" Alias "EbGetCallstackCount" (lngCount As Long) As Long
Private Declare Function GetCallStackFunction Lib "vba332.dll" Alias "EbGetCallstackFunction" (ByVal Lvl As Long, ByRef strBase As String, ByRef strModule As String, ByRef strFunction As String, ByRef Done As Long) As Long
Vor Gebrauch GetCallStackCount und GetCallStackFunction Anruf SetMode (2) und nach SetMode (1).
Dies ist die Art von Aufgabe, für die ASM gut ist. – pyon