Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA赋值是按值还是按引用?_Vba_Excel - Fatal编程技术网

Excel VBA赋值是按值还是按引用?

Excel VBA赋值是按值还是按引用?,vba,excel,Vba,Excel,我有两个同一类的对象,它们的属性是Double数组(Double()),我想执行以下操作: Obj1.arr_property = Obj2.arr_property 以上是通过值还是通过引用进行赋值?如果是通过引用,如何将其改为通过值?使用Set指定的所有内容仅将引用复制到新变量,而不是数据。 您不使用Set,因此将复制数组的所有值,而不仅仅是对数组的引用 实际上,在这种情况下,即使您愿意,也不能使用Set设置仅允许用于对象。数组不是对象,因此只能按您的方式指定它们 如果不使用赋值运算符=,

我有两个同一类的对象,它们的属性是Double数组(Double()),我想执行以下操作:

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_属性
,对吗?为什么不做一个实验呢?