相关疑难解决方法(0)

如何在运行时获取过程或函数名称?

没有办法在运行时返回函数或过程的名称?

我目前正在处理这样的错误:

Sub foo()
Const proc_name as string = "foo"
On Error GoTo ErrHandler

    ' do stuff

ExitSub:
    Exit Sub
ErrHandler:
    ErrModule.ShowMessageBox "ModuleName",proc_name
    Resume ExitSub
End Sub
Run Code Online (Sandbox Code Playgroud)

在我更新函数名称后,我最近经历了一个向我说谎的常量,但不是常量值.我想将过程的名称返回给我的错误处理程序.

我知道我必须与VBIDE.CodeModule对象进行交互才能找到它.我已经使用Microsoft Visual Basic for Applications Extensibility库进行了一些元编程,但是我在运行时没有取得任何成功.我没有以前的尝试,在我再次尝试这个尝试之前,我想知道它是否可以远程实现.

事情是行不通的

  1. 使用一些内置的VBA库来访问调用堆栈.它不存在.
  2. 当我进入并退出每个程序名时,通过从数组中推送和弹出程序名来实现我自己的调用堆栈.这仍然要求我将proc名称作为字符串传递给其他地方.
  3. vbWatchDog这样的第三方工具.这确实有效,但我不能在这个项目中使用第三方工具.

注意

vbWatchdog似乎是通过API调用直接访问内核内存来实现的.

error-handling vba

17
推荐指数
2
解决办法
4万
查看次数

标签 统计

error-handling ×1

vba ×1