VBA到底应不应该手工释放变量内存?

职场   2024-10-12 07:50   福建  

HI,大家好,我是星光。


在VBA的世界里,有很多问题都存在两种截然对立的观点,比如:是否应该强制声明变量?是否应该手工释放变量?


关于第1个问题,咱们之前聊过了,这里不再重复说明;最近又常有朋友询问第2个问题:


VBA是否应该手工释放变量?


常用释放变量语句....

释放数组:Erase arr释放单元格对象:Set rng = Nothing释放类库引用:Set dict = Nothing……


需要吗?不需要吗?不需要吗?需要吗?



我们这里不谈VBA自身的变量释放机制,它靠不靠谱很难说。但尽管如此,需不需要手工释放变量都是一个相对的概念:这是由变量大小和你电脑的性能决定的。


假设你的电脑内存有10桶水那么大,而你的变量只是一碗水,你装了一碗水,把这碗水倒掉,再装另外一碗水——就没意义。你那几碗水相比10桶的内存而言和一碗水其实没差别,而反复操作碗的过程,却在实际上拉低了代码的运行效率,摊手,对不对?



但是,假如你的变量很大,是按桶来算的,你上来就装了9桶水,然后又要装2桶水,而你的内存只有10桶水,那么如果前面9桶水没倒掉,不但代码运算效率受影响,甚至还会内存溢出。耸肩,是不是?



把碗和桶的水倒掉就是在释放变量所占的内存,因此不同情况下的最优选择就不一样。


打个响指,只能说,对于大部分、小脚本性质的VBA代码来说,变量的大小也就是几碗水,现在电脑的性能又远胜往昔,从运算效率角度出发,反复手工释放变量就真不是好事。你觉得你是为了电脑好,让它腾出内存空间,全心全意为你服务,但电脑觉得你为了一碗水折腾来折腾去,真TM好烦啊,估计恨不得对你漏下心电感应。


曾经有个教员反复教导我们说,一切问题都要从实际出发,具体问题要具体分析……可不就这么回事吗?——嘿!字数凑够原创标准了,挥手作别,下期再见吧。


👇本文由公众号“Excel星球”首发。

点击阅读原文,加入星光的Excel社群

Excel星球
微软全球最有价值专家(Excel MVP),上千篇原创图文和视频教程随学随用,随用随查,建议常用Excel的职场人关注。
 最新文章