2012-04-26 161 views
5

我正在调试其他几个*问题中提到的问题,并在调试过程中注意到一个奇怪的行为。Excel VBA“内存不足”调试技巧

行为: 经验“内存溢出”错误,而粘贴复杂的公式。在迭代的20,000行中,只有大约一半在错误之前粘贴公式。几乎所有的代码注释掉了,错误消失了。 为了发现导致它的代码的特定部分,增量取消注释代码。 最终取消注释所有代码并停止体验错误!

这意味着完全相同的代码在同一个Excel实例工作正常,并修复它,才需要运行代码的各种打火机之前的版本要回原来的版本。什么可能造成这种情况?

+2

我建议你试试Ron Bovey的[code cleaner](http://www.appspro.com/Utilities/CodeCleaner.htm) - 它通过导出,删除它然后重新插入导出的模块来检查代码 – brettdj 2012-04-26 05:36:12

+0

+ 1我同意brettdj。 Code Cleaner非常好。我也很好奇任何一个这样的例子给你的错误... – 2012-04-26 06:01:35

+0

谢谢@brettdj Code Cleaner没有帮助。它确实设法将.xla文件从159k降低到了151k,这对我来说很有吸引力。 – Trindaz 2012-04-26 19:06:06

回答

3

假设你正在运行的数据是每一次完全相同,这听起来更像是你的问题是与环境 - 的问题可能是操作系统内存耗尽。在Excel 2007中,公式和数据透视缓存的可用内存增加到2千兆字节(GB),所以这可能不是问题。然而,它当然也受到当时操作系统可用内存量的限制。

当你第一次测试它,您可用的操作系统内存较低的问题可能发生,因为(从其他进程运行......甚至已经推过通过后台程序的限制,如杀毒软件运行扫描)比之后你运行完整的宏时。我会试着打开任务管理器来运行你的宏,看看你是否在物理内存上接近最低。此外,(假设您使用的是Excel 2007或更高版本)查看Excel使用的内存量,看看您是否接近2GB的限制。我怀疑这会是问题,但至少值得仔细检查。另外,就像Zairja说的那样,确保你在开始时将计算设置为手动。

你说你用复杂的公式......看看这篇文章Improving Performance in Excel

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

对您有帮助吗?