gpt4 book ai didi

VBA:测试调用堆栈的顶部

转载 作者:行者123 更新时间:2023-12-04 18:38:24 24 4
gpt4 key购买 nike

我想测试一个过程是否由用户直接调用(因此它位于调用堆栈的顶部,请参阅 Debug模式下的 ctrl+L)或从另一个过程调用。

有没有人知道在不跟踪每个过程中传递的参数中的调用堆栈的情况下执行此操作的方法?

我尝试使用public 参数topOfCallStackFound 来做到这一点,然后向每个过程添加一些代码,例如:

select case topOfCallStackFound
case false
currentProcedureIsTopOfCallStack = true
topOfCallStackFound = true
case true
currentProcedureIsTopOfCallStack = false
end select

但这不起作用,因为 VBA 在代码执行完成后会记住 topOfCallStackFound 的值! topOfCallStackFound 的生命周期仅在工作簿关闭、发出end 命令或在其他一些无用的情况下结束。如果可以在代码执行完成时结束 topOfCallStackFound 的生命周期和/或在用户开始执行新代码时将 topOfCallStackFound 重新初始化为 false,我就完成了。

谢谢!

最佳答案

在 VBA 中没有查看调用堆栈的正常方法。这是因为通过 api 访问此调用堆栈是低级编译器的一部分,而不是 VBA 的一部分。

您可以在窗口中查看调用堆栈,因为 VBE 会编译 VBA 并运行它,因此可以访问 VBA 调用堆栈,但不会将其公开给 VBA。

但是你可以尝试使用这样的东西: http://www.everythingaccess.com/vbwatchdog.htm

关于VBA:测试调用堆栈的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16897070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com