2015-11-04 175 views
0

我开发了一个使用Excel VBA的程序,偶尔会导致'Excel Ran Out of Resources'错误。Err.Number没有为'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

我不认为'在错误'捕获内存问题。你能用'Calculate'程序更新你的问题,因为它可能有助于确定问题。 – Gareth

+0

是的,谢谢。它不是'Calculate',而是'ActiveSheet.Calculate'。这真的很简单。任何想法是否可以确定工作表中的哪些公式导致错误?我没有任何数组公式,但有一些使用变量和间接函数直接输入到某些数据透视表中。 – Mike

+0

具体来说,excel出现了什么错误?此外,何时调用此代码?这是一个事件,EG:在正在运行的“Workbook_Open”事件中? –

回答

0

我只是碰巧碰到了another issue,听起来像是你的。

从另一个线程的一点是,Excel不把这些应用方法结果VBA错误。相反,它们是Excel警报,它们可以被抑制但不会陷入VBA中作为错误。

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

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

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