ユーザー定義型の配列をコピーするには?

解決


むむ  2006-10-25 21:05:28  No: 133839

ユーザー定義型の配列を2つ作成(同じユーザー定義)し、
片方の内容をもう片方にコピーしようとしています。
ループさせずに、1度でコピーすることは、可能でしょうか?

Type MyType
   code as integer
   name as string
End Type
Dim A() as MyType
Dim B() as MyType

  A(1).code=1
  A(1).name="太郎"
  A(2).code=2
  A(2).name="花子"

のようなもので、
BにAの内容をまるごとコピーしたいのです。

配列でないか、または、添え字を指定していれば
LSet
が使えますが・・・

こういう場合は、
Loopさせて、LSetを使うのが普通なのでしょうか?

よろしくお願いします。


ガッ  2006-10-25 21:24:17  No: 133840

配列の丸ごとディープコピーですよね?
vb6ならそれとなく出来ていますよ?

Option Explicit
Private Type t
    a As Long
    b As Long
End Type
Private Sub Form_Load()
    Dim x(1 To 5) As t
    Dim y() As t
    
    x(3).a = 10
    y = x
    Debug.Print y(3).a
    y(3).a = 20
    Debug.Print x(3).a
End Sub


むむ  2006-10-25 22:25:32  No: 133841

ガッさん、有り難うございます。

今、試してみたところ、できました。

> y = x
にすると、シャローコピーになるものだと思い込んで、
難しく考えすぎていました。

助かりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加