2016-04-29 12 views
2

私はdoubleの配列のプロパティ持つ同じクラスの2つのオブジェクト(ダブルを())があり、私は次の操作を実行したいと思います:Excel VBA割り当て値または参照?

Obj1.arr_property = Obj2.arr_property 

上記の値で割り当てるつもりですか参考として?参照によって、代わりに値でそれを作る方法は?

+1

なぜ実験をしないのですか? –

答えて

3

Setで割り当てたものはすべて、データではなく新しい変数への参照のみをコピーします。 Setは使用しないので、配列の参照だけでなく、配列のすべての値がコピーされます。

この場合、実際にはSetを使用することはできません。 Setはオブジェクトに対してのみ許可されています。配列はオブジェクトではないので、配列はあなたのやり方だけに割り当てることができます。

代入演算子=を使用せず、関数に値を渡す場合は、少し違っています。しかし、それは別の質問です。

+0

ちょうど私が正しく理解していることを確認するために: 'Set'を使わないと、値は割り当てられ、参照は割り当てられません。だから、後で 'Obj1.arr_property'を変更すると、' Obj2.arr_property'は変更されませんよね? – ursan

+0

まさにその通りです。 – Leviathan

+0

素晴らしい、ありがとう! – ursan

0

これは、参照ではなく値をObj1.arr_propertyにコピーします。

重要なことは、宛先配列が動的/サイズ変更可能でなければならないことです。つまり、Dim arr_property(10) As Doubleのようなものではなく、この形式で宣言する必要があります(Dim arr_property() As Double)。そうしないとCan't assign to arrayエラーが発生します。

関連する問題