Excel VBA 在更少的内存分配、更好的内存管理和更少的内存使用方面更好:
(1)为 Range.Value 使用静态变量,每次工作表更改时我都必须更新该变量,
Dim myValue as Integer: myValue = Range("XYZ").Value: Debug.Print myValue
(2) 还是指向 Range 对象的指针?
Dim myValue as Range: Set myValue = Range("XYZ"): Debug.Print myValue.Value
老实说:你不应该关心它。使用对您来说更方便的方式。
一些备注:
当例程结束时,局部变量总是会被丢弃,因此即使其中一个变量会消耗更多内存,也没关系。
我非常怀疑这两次尝试的速度是否有任何差异,即使有一个,也只有当你重复代码一百万次左右时才能测量它。
您的整数变量不是静态的。静态变量是在子例程结束后仍然存在的局部变量。它很少使用,在您的情况下,将其静态化是没有意义的。
即使有大量数据,您通常也不应该关心内存消耗。在每台现代计算机上,暂时使用一些 MByte 内存根本没有关系。如果您必须处理大量数据,请在处理之前将其读入数组 - 这会显着加快执行时间。
在 VBA 中,忘记 Integer 并始终使用 Long。