哪个SUB正在调用此SUB

Ric*_*cer 8 ms-access vba

有没有人知道如何在进行堆栈跟踪.我正在尝试做类似的事情:

Public Sub a()   
    Call c    
End Sub    

Public Sub b()    
    Call c    
End Sub

Public Sub c()    
    Debug.Print "Which sub has called me ?"    
End Sub
Run Code Online (Sandbox Code Playgroud)

我想要做的Sub c是显示是否通过Sub aSub b不通过任何参数调用它.在我只是显示堆栈,但我不知道这是否甚至可能在VBA - 任何想法?

Fra*_*ean 12

您可以在运行时在菜单View- > 下访问调用堆栈Call Stack

或者,您可以在运行时使用键盘快捷键CTRL+ L.

在此输入图像描述


小智 0

您可以判断的唯一方法是从堆栈中获取调用子例程的返回地址指针。VBA 不会直接这样做,您必须编写自己的库,或者从需要了解这些内容的其他人那里获得一个库。如果调用例程来自您无法更新的程序,这可能是值得的,但是如果这仅来自您自己的代码,则重写代码以识别调用者会容易得多。