Excel VBA赋值是按值还是按引用?
我有两个同一类的对象,它们的属性是Double数组(Double()),我想执行以下操作:Excel VBA赋值是按值还是按引用?,vba,excel,Vba,Excel,我有两个同一类的对象,它们的属性是Double数组(Double()),我想执行以下操作: Obj1.arr_property = Obj2.arr_property 以上是通过值还是通过引用进行赋值?如果是通过引用,如何将其改为通过值?使用Set指定的所有内容仅将引用复制到新变量,而不是数据。 您不使用Set,因此将复制数组的所有值,而不仅仅是对数组的引用 实际上,在这种情况下,即使您愿意,也不能使用Set设置仅允许用于对象。数组不是对象,因此只能按您的方式指定它们 如果不使用赋值运算符=,
Obj1.arr_property = Obj2.arr_property
以上是通过值还是通过引用进行赋值?如果是通过引用,如何将其改为通过值?使用
Set
指定的所有内容仅将引用复制到新变量,而不是数据。
您不使用Set
,因此将复制数组的所有值,而不仅仅是对数组的引用
实际上,在这种情况下,即使您愿意,也不能使用Set
<代码>设置仅允许用于对象。数组不是对象,因此只能按您的方式指定它们
如果不使用赋值运算符
=
,而是将值传递给函数,则情况会有所不同。但这是另一个问题。这将把值而不是引用复制到Obj1.arr\u属性中
需要记住的一件重要事情是,目标阵列必须是动态/可重新调整大小的。这意味着它需要以这种形式声明,Dim arr\u property()为Double
,而不是像Dim arr\u property(10)这样的东西为Double
。否则您将得到一个错误。只是为了确保我理解正确:如果我不使用Set
,则分配值,而不是引用。所以,如果我以后修改Obj1.arr_属性
,它不会修改Obj2.arr_属性
,对吗?为什么不做一个实验呢?