10

是否可以CallStack在 VBA 中看到 MS Access 2003?也就是说,能不能从叫什么看procedurefunctionfunction

4

4 回答 4

11

在运行时,查看菜单 -> 调用堆栈(或按 CTRL + L)。

于 2009-03-25T18:50:39.470 回答
3

VBA 中没有编程方式来查看我所知道的调用堆栈。这个问题的通常解决方案是使用一些结构来跟踪函数的调用,但它对我来说似乎总是一个杂物,而且只有在编程时(而不是在运行时)才真正有用,在这种情况下,我觉得 VBE 的查看调用堆栈的内置功能就足够了。

而且,顺便说一句,我总是将调用堆栈按钮放在我的 VBE 工具栏上,因为它是我最常用的功能之一。我还添加了编译按钮——我认为它默认不在工具栏上很疯狂,因为它鼓励人们在不强制编译的情况下编写代码。话又说回来,Access 2000 在默认情况下甚至没有使用 Option Explicit(据说是为了与使用 VBE 的其他应用程序保持一致——换句话说,为了使其与几乎没有代码的应用程序保持一致,使 Access 变得笨拙——重的)。

但我离题了...

于 2009-03-26T04:11:26.547 回答
2

最后,为您的函数添加一个可选参数,并以这种方式传递调用者名称。对于表单,您可以Me.Name用作参数。

于 2012-03-01T10:44:42.393 回答
2

是的,这是可能的,但它不是很有用!

Private Declare Sub SetMode Lib "vba332.dll" Alias "EbSetMode" (ByVal lngMode As Long)
Private Declare Function GetCallStackCount Lib "vba332.dll" Alias "EbGetCallstackCount" (lngCount As Long) As Long
Private Declare Function GetCallStackFunction Lib "vba332.dll" Alias "EbGetCallstackFunction" (ByVal Lvl As Long, ByRef strBase As String, ByRef strModule As String, ByRef strFunction As String, ByRef Done As Long) As Long

Before use GetCallStackCount and GetCallStackFunction call SetMode(2), and after SetMode(1).

于 2015-02-22T16:48:30.090 回答