我想测试一个过程是由用户直接调用(因此它位于调用堆栈的顶部,请参阅调试模式下的 ctrl+L)还是从另一个过程调用。
有人知道在不跟踪每个过程中传递的参数中的调用堆栈的情况下执行此操作的方法吗?
我尝试使用公共参数topOfCallStackFound来做到这一点,然后在每个过程中添加一些代码,例如:
select case topOfCallStackFound
case false
currentProcedureIsTopOfCallStack = true
topOfCallStackFound = true
case true
currentProcedureIsTopOfCallStack = false
end select
但这不起作用,因为 VBA在代码执行完成后会记住topOfCallStackFound的值!topOfCallStackFound的生命周期仅在工作簿关闭、给出结束命令或其他一些无用的情况下结束。如果可以在代码执行完成时结束topOfCallStackFound的生命周期和/或在用户开始执行新代码时将topOfCallStackFound重新初始化为 false,我就完成了。
谢谢!