如何不用重启就可以清除VBA中的内存,运行宏时总出现内存溢出的情况

宏所作用的数据很多 多大90W行,然后代码没问题 我还用 语句 earse arr 进行清空数组了,单个工作簿运行没问题 不过打开其他工作簿 想继续运行的时候 就出现内存溢出的错误;需要重启excel才能运行宏。有没有不用重启可以清除VBA内存的方法?

内存的问题应该从SUB来解决,如果只是申请了数组,SUB结束后就自动释放了,无需担心。

我写了一个简单例子,SUB A调用SUB B,SUB B使用数组分配大量内存,返回SUB A的时候内存就自动释放了,我调试的过程如下。

SUB A开始执行,尚未调用SUB B:

下图是进入SUB B之后,分配数组之前的内存情况(几乎无变化):

下图是分配数组后的情况(内存大幅度增加):

下图是SUB B执行结束,返回SUB A后内存情况(全部释放):


总结,如果只是使用数组,基本上不担心内存泄漏,划分好SUB就行。

追问

你的意思就是 说 不是 使用数组的原因?
那是什么原因?
因为要在多个工作簿使用同样的代码 第一次使用完保存就没事,但是 重新打开另一个工作簿 再次使用就弹出内存溢出的错误,需要重启才能再次运行。
所以我想有没有方法在任务启动器关掉某个程序还是 在excel进行什么操作可以解决的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-05-18
放不下,一个单元格最多放 32767 个字符追问

??
那有什么办法解决?

第2个回答  2023-05-05
结束的时候把全局变量设回初始值
第3个回答  2017-05-18
用局部变量追答

inti 不用的设为null