如何以编程方式找到调用宏的内容

15 浏览
0 Comments

如何以编程方式找到调用宏的内容

我正在尝试编写一个宏,在其中的一部分根据调用方式的不同产生不同的反应。我还希望能够根据调用它的其他宏的不同而有所不同。在这种情况下,如果该宏通过工作表中的按钮手动激活,或者被特定的其他宏运行,它会弹出一个消息框,告知用户已成功完成。但是如果相同的宏由另一个宏运行,则我希望跳过这一步骤。是否有办法实现这个需求?

0
0 Comments

如何编程查找调用宏的方法

有时候我们需要找出哪个程序或者对象调用了某个宏。下面是一种可以用于形状/过程的方法。

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/

0
0 Comments

问题的出现原因是作者想要找出调用一个宏的是什么。解决方法是通过向子程序传递参数来实现。以下是一个非常基本的示例:

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`的东西可以显示调用的子过程,但我开始觉得它不存在。

0