配列 配列のコピー

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit


Private Sub Test()

Dim i As Long
Dim 動的配列A()
Dim 動的配列B()
Dim 静的配列C(5)
Dim 静的配列D(0 To 5)

Dim テスト動的配列A()
Dim テスト動的配列B()
Dim テスト動的配列C()
Dim テスト動的配列D()

For i = 0 To 5
    ReDim Preserve 動的配列A(i)
    ReDim Preserve 動的配列B(i)
    動的配列A(i) = "A" & i
    動的配列B(i) = "B" & i
    静的配列C(i) = "C" & i
    静的配列D(i) = "D" & i
Next i

テスト動的配列A = 動的配列A
テスト動的配列B = 動的配列B
テスト動的配列C = 静的配列C
テスト動的配列D = 静的配列D

For i = LBound(テスト動的配列A) To UBound(テスト動的配列A)
    Debug.Print テスト動的配列A(i)
Next i
'A0
'A1
'A2
'A3
'A4
'A5
For i = LBound(テスト動的配列B) To UBound(テスト動的配列B)
    Debug.Print テスト動的配列B(i)
Next i
'B0
'B1
'B2
'B3
'B4
'B5
For i = LBound(テスト動的配列C) To UBound(テスト動的配列C)
    Debug.Print テスト動的配列C(i)
Next i
'C0
'C1
'C2
'C3
'C4
'C5
For i = LBound(テスト動的配列D) To UBound(テスト動的配列D)
    Debug.Print テスト動的配列D(i)
Next i
'D0
'D1
'D2
'D3
'D4
'D5

'コピー元配列の値を変更します。
For i = 0 To 5
    動的配列A(i) = "w" & i
    動的配列B(i) = "x" & i
    静的配列C(i) = "y" & i
    静的配列D(i) = "z" & i
Next i

For i = LBound(テスト動的配列A) To UBound(テスト動的配列A)
    Debug.Print テスト動的配列A(i)
Next i
'A0
'A1
'A2
'A3
'A4
'A5
'値は変わりません
'参照渡しではなく値渡しだからです。
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
End Sub

 

 

 

2000年01月01日|[VBサンプルコード]:[配列]