" Out of Memory" excel VBA中的错误,适用于非常大的模型。我怎么能避免这个?

时间:2015-03-31 11:52:55

标签: excel vba excel-vba

我正在尝试在VBA for Excel中声明一个新变量。我有一个excel模型,它有9个模块和7个类模块。每个模块都非常大,每个模块中平均声明了60个变量,每个模块中最少有几百行代码,最多只有几千行代码。每次我尝试输入一个新变量时,都会收到一条错误信息“Out Of Memory”。如何避免此错误并继续声明更多变量?

3 个答案:

答案 0 :(得分:1)

正如评论中所提到的,我们的数据太少,无法为您提供明确的答案。

但原因可能很多:

  • 您正在声明许多对象("设置obj =")并且从不清除它们(Set obj = Nothing)。如果不减少对对象的引用,它将保留在内存中。
  • 你有一个循环,你要声明很多对象/变量,直到你得到内存溢出。
  • 您正在创建分配太多内存的太多对象(例如IE对象等)

如何处理?

答案 1 :(得分:0)

  

每当我尝试输入一个新变量时,我都会收到一条错误,上面写着" Out Of Memory"。

这听起来像设计时错误 - 编辑代码时出现的错误,而不是运行代码时遇到的运行时错误。

如果确实这是设计时错误,则您的文件可能已损坏。尝试通过将所有工作表复制到新工作簿并将代码复制到新的空白模块来重建它。

答案 2 :(得分:0)

请注意,VBA表单,标准和类模块,过程,类型和变量都有大小限制。

我在这里只看到了它:

https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/aa716182(v=vs.60)

您需要缩小程序的范围,将其拆分为逻辑步骤。或者使用像VB.NET这样更强大的编程语言。