Err.Number没有填充'Excel Ran Out of Resources'错误

时间:2015-11-04 18:12:09

标签: excel vba error-handling

我使用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

任何见解都会很棒,因为我已经搜索了好几天而且找不到合适的工作。

1 个答案:

答案 0 :(得分:0)

我碰巧碰到another issue听起来像你的。

另一个主题是,Excel不会将这些应用程序方法结果视为 VBA错误。相反,它们是 Excel警报,它们可以被抑制但不会在VBA中被捕获为错误。

我解释这一点的方式是,当您从VBA执行某些应用程序方法时,它不会引发VBA可以捕获的错误。而是,Excel与用户交互,就像用户发出GUI命令一样。另一方面,如果应用程序方法被设计为与VBA交互(例如,如果它返回一个值),那么VBA可能能够处理它的错误。

这与VBA处理工作表函数而非应用程序方法的方式不同。 VBA可以拦截工作表函数引发的错误,如“使用工作表函数进行错误处理”here中所述。

我意识到这并不能解决你的问题,但它会让你知道原因。