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 。 否则,你会得到一个不能分配给数组错误。