如何以编程方式找到调用宏的内容
如何编程查找调用宏的方法
有时候我们需要找出哪个程序或者对象调用了某个宏。下面是一种可以用于形状/过程的方法。
Dim SSub As String
Sub Sample()
On Error Resume Next
SSub = Application.Caller '<~~ Already suggested by
On Error GoTo 0
Debug.Print "This procedure was called by " & SSub
End Sub
Sub Example()
SSub = "Example" '~~> (Also see the link below)
Sample
End Sub
如果想要更深入了解的话,你还可以阅读此链接:http://etutorials.org/Microsoft+Products/access/Chapter+7.+VBA/Recipe+7.2+Create+a+Global+Procedure+Stack/
问题的出现原因是作者想要找出调用一个宏的是什么。解决方法是通过向子程序传递参数来实现。以下是一个非常基本的示例:
Sub test(number, displayMessage) MsgBox ("The number is " & number) If displayMessage Then MsgBox ("You ran the B sub") End Sub Sub aSub() Call test(4, False) End Sub Sub bSub() Call test(7, True) End Sub
尝试运行aSub和bSub。希望对你有所帮助。
这是我喜欢的方式。为每个入口点创建单独的入口过程,而不是为每个入口点创建一个过程。对我来说,这样可以保持代码更清晰、更易于维护。
我想我可能需要这样做。我原本希望有类似于`Application.Caller`的东西可以显示调用的子过程,但我开始觉得它不存在。