我正在尝试编写一个宏,其中一部分的响应方式不同,具体取决于它是直接从工作表中的按钮调用,还是从另一个宏间接调用。我还希望能够让它有不同的反应,具体取决于其他宏称之为
在这种情况下,如果通过按钮手动激活宏,或者它已由特定的其他宏运行,则会弹出一个msgbox以让用户知道它已成功完成,但是如果相同的宏由另一个宏运行,然后我想跳过这一步。
有没有办法呢?
答案 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。 :)