VB.netをやっていて、ハマったことがある。

スカラー型の変数、つまり Integer や String など、「単独」の型のものは、コピーは簡単だ。

Dim A As String
Dim B As String
とあれば、
A = B
で A に B の値が入る。当たり前だが、A と B は独立しているので、この後、A に違う値を入れてもBの値は影響を受けない。逆もまた然りで、B に違う値を入れても、Aの値はそのままである。

しかし、単に = で渡せばその複写ができる、という訳でもないのがオブジェクトだ。
Dim A As [オブジェクト型]
Dim B As [オブジェクト型]
※特にオブジェクト型を限定しない。クラスであることもあれば、コントロールであることもある。この例では A も B も同じ型とする。
と言う場合、
A = B
とすると、確かに A で B の値が見える。ところが、A に何か値を入れると、B にも連動するのだ。
A は B へのショートカットみたいな役割を果たす、といえば分かりやすいだろうか。

さて。上記の[オブジェクト型]、VBAでデータクラスを作っても同じ事がいえる。

では、オブジェクトはコピーできないのか、というとそんなことはない。このあたりはVBAユーザーがクラスモジュールを使いこなす上で重要なポイントではないかと思う。

詳細は、後日。