Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“内存不足”;excel VBA中针对非常大模型的错误。我怎样才能避免这种情况?_Vba_Excel - Fatal编程技术网

&引用;“内存不足”;excel VBA中针对非常大模型的错误。我怎样才能避免这种情况?

&引用;“内存不足”;excel VBA中针对非常大模型的错误。我怎样才能避免这种情况?,vba,excel,Vba,Excel,我正在尝试在VBA for Excel中声明一个新变量。我有一个excel模型,它有9个模块和7个类模块。每个模块都非常大,每个模块中平均声明了60个变量,每个模块中最少有几百行代码,最多有几千行代码。每次我尝试键入一个新变量时,都会出现一个错误,上面写着“内存不足”。如何避免此错误并继续声明更多变量?如评论中所述,我们的数据太少,无法为您提供明确的答案 然而,原因可能很多: 您正在声明许多对象(“Set obj=”)并且从不清理它们(Set obj=Nothing)。如果不减少对对象的引用,

我正在尝试在VBA for Excel中声明一个新变量。我有一个excel模型,它有9个模块和7个类模块。每个模块都非常大,每个模块中平均声明了60个变量,每个模块中最少有几百行代码,最多有几千行代码。每次我尝试键入一个新变量时,都会出现一个错误,上面写着“内存不足”。如何避免此错误并继续声明更多变量?

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

然而,原因可能很多:

  • 您正在声明许多对象(“Set obj=”)并且从不清理它们(Set obj=Nothing)。如果不减少对对象的引用,它将保留在内存中
  • 你有一个循环,在这个循环中你声明了很多对象/变量,直到你得到一个内存溢出
  • 您一次创建的对象太多,分配的内存太多(例如IE对象等)
如何处理这个问题?

  • 从引发错误的代码开始,因为这很可能发生在循环或其他增加内存使用的地方(使用调试F8遍历代码)。根据问题的来源,可能有许多解决方案

  • 利用代码中不同里程碑的内存统计信息,或者只需使用任务管理器

  • 查看以下提示是否有帮助:


每次我尝试键入一个新变量时,都会出现一个错误,上面写着“内存不足”

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


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

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

我只在这里看到了记录:


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

我们的信息太少了。请向我们显示生成此错误的代码。即使您修复了此错误。。。如果您在Excel中出现内存错误,我建议在中期内考虑迁移到一个更具可扩展性的平台,比如SQL Server。不知道你的模型是做什么的,很难知道这有多实际。“每次我试着输入一个新变量…”这是设计时的错误吗?您所描述的是一个规模不错的VBA项目,但决不是太大。你所有的变量都是公共的吗?@RachelHettinger我的很多变量都是全局的、公共的和私有的。安装office 64位。32位进程的内存使用限制在2gb左右。谢谢回复。我只是想让您知道在运行时没有错误。只要我尝试声明一个变量,就会得到错误。公共变量、私有变量和局部变量(函数或子例程的局部变量)也是如此