我可以找到哪个子函数调用函数吗?

时间:2018-09-17 08:08:57

标签: excel vba excel-vba

我有一个相当大的VBA项目,现在我需要知道什么子函数在调用该函数。

示例:

sub first()
    RunSomeCode
end sub

sub second()
    RunSomeCode
end sub


Function RunSomeCode()
    ' here I need to know if the calling sub is first() or second()

end function

我知道的唯一方法是在带有子调用名称的第一个和第二个子调用中传递带有函数调用的字符串。
但是这个函数随处可见,我想知道是否有更简单的方法来实现它。

我需要获取一个名为RunSomeCode的子字符串,仅在调试中获取它是不够的。

2 个答案:

答案 0 :(得分:2)

Ctrl+L是VBA中呼叫堆栈的快捷方式。您可能会看到堆栈。如下面的屏幕快照所示,该函数是从Sub Second调用的:

enter image description here

答案 1 :(得分:1)

假设您只需要在第一和第二位置使用它,那么这可能会有所帮助

Option Explicit
Sub first()
    RunSomeCode "First"
End Sub

Sub second()
    RunSomeCode "Second"
End Sub

Sub third()
    RunSomeCode
End Sub

Function RunSomeCode(Optional Caller As String)
' here I need to know if the calling sub is first() or second()
    If Len(Caller) > 0 Then
        Debug.Print Caller
    End If

End Function