如何以编程方式查找所谓的宏

时间:2014-10-29 15:55:03

标签: excel excel-vba vba

我正在尝试编写一个宏,其中一部分的响应方式不同,具体取决于它是直接从工作表中的按钮调用,还是从另一个宏间接调用。我还希望能够让它有不同的反应,具体取决于其他宏称之为

在这种情况下,如果通过按钮手动激活宏,或者它已由特定的其他宏运行,则会弹出一个msgbox以让用户知道它已成功完成,但是如果相同的宏由另一个宏运行,然后我想跳过这一步。

有没有办法呢?

2 个答案:

答案 0 :(得分:4)

您可以通过将参数传递给子例程来完成此操作。这是一个非常基本的例子:

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。希望这有帮助。

答案 1 :(得分:1)

这是一种适用于形状/程序

的方法
Dim SSub As String

Sub Sample()
    On Error Resume Next
    SSub = Application.Caller '<~~ Already suggested by @Socii
    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

如果您想将其提升到其他级别,您可能还需要阅读THIS。 :)