Excel VBA按值或按引用分配?
我有两个同一类的对象有一个双精度数组(Double())的数组,我想要做以下事情:
Obj1.arr_property = Obj2.arr_property
以上是按价值还是参照分配? 如果通过参考,如何以价值取而代之?
您使用Set
分配的所有内容仅将引用复制到新variables中,而不是数据。 你不使用Set
,所以数组的所有值都被复制,而不仅仅是数组的引用。
在这种情况下,你实际上不能使用Set
,即使你想要。 Set
仅适用于对象。 数组不是对象,所以它们只能按照你的方式分配。
如果您不使用赋值运算符=
,那么情况会有所不同,但会将值传递给函数。 但这是另一个问题。
这将复制值,而不是引用,到Obj1.arr_property
。
一个重要的事情要记住的是,目标数组必须是dynamic/可重新定义的。 这意味着它需要以这种forms进行声明, Dim arr_property() As Double
,而不是像Dim arr_property(10) As Double
。 否则,你会得到一个不能分配给数组错误。