Excel VBA按值或按引用分配?

时间:2016-04-29 18:22:46

标签: excel vba excel-vba

我有两个同一个类的对象,它们的属性是双精度数组(Double()),我想做以下几点:

Obj1.arr_property = Obj2.arr_property

以上是按价值还是按参考分配?如果通过引用,如何通过值来改变它?

2 个答案:

答案 0 :(得分:3)

您使用Set分配的所有内容仅复制对新变量的引用,而不是数据。 您不使用Set,因此会复制数组的所有值,而不仅仅是对数组的引用。

在这种情况下,即使您愿意,也实际上无法使用SetSet仅允许使用对象。数组不是对象,因此只能按照您的方式进行分配。

如果您不使用赋值运算符=,但将值传递给函数,则情况会有所不同。但这是另一个问题。

答案 1 :(得分:0)

这会将值而不是引用复制到Obj1.arr_property

要记住的一件重要事情是目标数组必须是动态/可调整大小的。这意味着它需要以这种形式Dim arr_property() As Double声明,而不是Dim arr_property(10) As Double。否则,您将收到Can't assign to array错误。