Excel VBA 中为 Range 变量分配了多少内存?

问题描述 投票:0回答:1

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
excel vba memory-management
1个回答
0
投票

老实说:你不应该关心它。使用对您来说更方便的方式。

一些备注:

  • 当例程结束时,局部变量总是会被丢弃,因此即使其中一个变量会消耗更多内存,也没关系。

  • 我非常怀疑这两次尝试的速度是否有任何差异,即使有一个,也只有当你重复代码一百万次左右时才能测量它。

  • 您的整数变量不是静态的。静态变量是在子例程结束后仍然存在的局部变量。它很少使用,在您的情况下,将其静态化是没有意义的。

  • 即使有大量数据,您通常也不应该关心内存消耗。在每台现代计算机上,暂时使用一些 MByte 内存根本没有关系。如果您必须处理大量数据,请在处理之前将其读入数组 - 这会显着加快执行时间。

  • 在 VBA 中,忘记 Integer 并始终使用 Long。

© www.soinside.com 2019 - 2024. All rights reserved.