Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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_Out Of Memory - Fatal编程技术网

Excel VBA“;“内存不足”;调试技术

Excel VBA“;“内存不足”;调试技术,vba,excel,out-of-memory,Vba,Excel,Out Of Memory,我在调试其他一些*问题中提到的一个问题,并在调试过程中注意到一个奇怪的行为 行为: 粘贴复杂公式时遇到“内存不足”错误。在我迭代的20000行中,只有大约一半的行在错误之前粘贴了公式。 注释掉几乎所有的代码,错误就会消失。 逐步取消注释代码,以期发现导致它的特定代码部分。 最终取消对所有代码的注释并停止遇到错误 这意味着完全相同的代码在同一个Excel实例中运行良好,修复它只需要在返回到原始版本之前运行不同版本的代码。什么可能导致这种情况?假设您每次运行的数据都完全相同,听起来您的问题更像是环境

我在调试其他一些*问题中提到的一个问题,并在调试过程中注意到一个奇怪的行为

行为: 粘贴复杂公式时遇到“内存不足”错误。在我迭代的20000行中,只有大约一半的行在错误之前粘贴了公式。 注释掉几乎所有的代码,错误就会消失。 逐步取消注释代码,以期发现导致它的特定代码部分。 最终取消对所有代码的注释并停止遇到错误


这意味着完全相同的代码在同一个Excel实例中运行良好,修复它只需要在返回到原始版本之前运行不同版本的代码。什么可能导致这种情况?

假设您每次运行的数据都完全相同,听起来您的问题更像是环境问题—问题可能是操作系统内存不足。在Excel2007中,公式和数据透视缓存的可用内存增加到了2GB,因此这可能不是问题所在。然而,它当然也受到操作系统当时可用内存的限制

出现此问题的原因可能是,当您第一次测试它时,可用的操作系统内存(来自运行的其他进程…甚至可能被后台程序(如运行扫描的防病毒软件)推到超出限制)低于您稍后运行完整宏时的内存。我会尝试在任务管理器打开的情况下运行宏,以查看物理内存是否接近不足。另外,(假设您使用的是Excel2007或更高版本),查看Excel使用的内存量,看看是否接近2GB的限制。我怀疑这是否是问题所在,但至少值得再次检查。此外,正如Zairja所说,确保在开始时将计算设置为手动

你说你用的是复杂的公式。。。请在上查看这篇文章

本文中有很多有用的信息,可能会帮助您简化宏


这对您有帮助吗?

我建议您尝试一下Ron Bovey的-it大修代码,将其导出,删除,然后重新插入导出的模块+1。我同意brettdj的观点。代码清理器真的很好。我也很好奇任何一个这样的例子会给你带来错误…谢谢@brettdj,但是代码清理器没有帮助。它确实设法把XLA文件从159K降到151K,这对我来说很有意思。你能发布一些代码摘录,特别是粘贴复杂公式吗?我还要确保您在开始时设置了
Application.Calculation=xlCalculationManual
,然后在结束时返回到
xlCalculationAutomatic
,尽管我确信您已经这样做了。