如何确定一个宏是否被excel中的另一个宏调用,并相应地执行代码

如何确定一个宏是否被excel中的另一个宏调用,并相应地执行代码,excel,vba,Excel,Vba,这只是我想做的一个例子。我有一个复杂的宏,我想做不同的事情,这取决于它是否被另一个宏调用 sub Example() Call MyCode end sub sub MyCode() If Called by Example GoTo SkipNextLine Do these things exit sub SkipNextLine: Do other things end sub 一种简单的方法是使用参数和参数 Sub Example() Call MyCode("Example

这只是我想做的一个例子。我有一个复杂的宏,我想做不同的事情,这取决于它是否被另一个宏调用

sub Example()
Call MyCode
end sub

sub MyCode()
If Called by Example GoTo SkipNextLine
Do these things
exit sub
SkipNextLine:
Do other things
end sub

一种简单的方法是使用参数和参数

Sub Example()
    Call MyCode("Example")
End Sub

Sub Example2()
    Call MyCode("Example2")
End Sub

Sub MyCode(Origin as String)
    Select Case Origin
        Case "Example"
            'Do stuff here
        Case "Example2"
            'Do other stuff here
    End Select
End Sub

一种简单的方法是使用参数和参数

Sub Example()
    Call MyCode("Example")
End Sub

Sub Example2()
    Call MyCode("Example2")
End Sub

Sub MyCode(Origin as String)
    Select Case Origin
        Case "Example"
            'Do stuff here
        Case "Example2"
            'Do other stuff here
    End Select
End Sub

您可以创建隐藏名称(实际上,它与范围无关)。将其视为全局变量。全局变量和此名称之间的区别在于,当您关闭工作簿时,该名称将保留在工作簿中。当您再次打开工作簿时,无需任何初始化即可开始使用它。作为奖励,此名称不会显示在名称管理器中。名称的定义只需要一次

Sub SetHiddenName()
    Names.Add Name:="Caller", RefersTo:="StartValue", Visible:=False
End Sub

Sub FF()
    Names("Caller").Value = "FF"
    Call SS
End Sub

Sub SS()
    Select Case [Caller]
        Case "FF": MsgBox "Called by FF" '...
        Case "ZZ": MsgBox "Called by ZZ"
    End Select
End Sub

您可以创建隐藏名称(实际上,它与范围无关)。将其视为全局变量。全局变量和此名称之间的区别在于,当您关闭工作簿时,该名称将保留在工作簿中。当您再次打开工作簿时,无需任何初始化即可开始使用它。作为奖励,此名称不会显示在名称管理器中。名称的定义只需要一次

Sub SetHiddenName()
    Names.Add Name:="Caller", RefersTo:="StartValue", Visible:=False
End Sub

Sub FF()
    Names("Caller").Value = "FF"
    Call SS
End Sub

Sub SS()
    Select Case [Caller]
        Case "FF": MsgBox "Called by FF" '...
        Case "ZZ": MsgBox "Called by ZZ"
    End Select
End Sub