我使用Excel VBA开发了一个程序,偶尔会导致“Excel Ran Out of Resources”错误。
关闭文件,重新打开并重新运行宏始终会修复产生错误的任何问题。我知道,首先防止错误是最好的做法,但我不得不相信这是不可避免的。
因此,我想提醒用户错误,而不是Excel执行此操作,并在检测到错误后执行一些操作。问题是我无法使用On Error GoTo ErrorHandler
例程或Err.Number
属性让VBA识别错误。我从未进入下面的msgbox:
我的代码如下:
Sub test()
On Error GoTo ErrorHandler
Calculate
ProcedureDone:
Exit Sub
ErrorHandler:
MsgBox "Error", vbOKOnly, "Oops"
Resume ProcedureDone
End Sub
任何见解都会很棒,因为我已经搜索了好几天而且找不到合适的工作。
答案 0 :(得分:0)
我碰巧碰到another issue听起来像你的。
另一个主题是,Excel不会将这些应用程序方法结果视为 VBA错误。相反,它们是 Excel警报,它们可以被抑制但不会在VBA中被捕获为错误。
我解释这一点的方式是,当您从VBA执行某些应用程序方法时,它不会引发VBA可以捕获的错误。而是,Excel与用户交互,就像用户发出GUI命令一样。另一方面,如果应用程序方法被设计为与VBA交互(例如,如果它返回一个值),那么VBA可能能够处理它的错误。
这与VBA处理工作表函数而非应用程序方法的方式不同。 VBA可以拦截工作表函数引发的错误,如“使用工作表函数进行错误处理”here中所述。
我意识到这并不能解决你的问题,但它会让你知道原因。