配列を別の配列にコピーしたい場合があります。
注意しないといけないのは静的配列と動的配列でコードの記載方法が異なります。
静的配列をコピーするサンプルコード
一次元配列、二次元配列共に静的配列の場合はFor~Loopで処理する必要があります。
'■静的一次元配列をコピーする
Public Function Call_ArrayCopy()
Dim arr1(3) As Long
Dim arr2(3) As Long
Dim i As Long
arr1(0) = 1
arr1(1) = 2
arr1(2) = 3
arr1(3) = 4
For i = LBound(arr1) To UBound(arr1)
arr2(i) = arr1(i)
Next i
End Function
'■静的二次元配列をコピーする
Public Function Call_ArrayCopy2D()
Dim arr1(1, 1) As Long
Dim arr2(1, 1) As Long
Dim i As Long, l As Long
arr1(0, 0) = 1
arr1(0, 1) = 2
arr1(1, 0) = 3
arr1(1, 1) = 4
For i = LBound(arr1, 1) To UBound(arr1, 1)
For l = LBound(arr1, 2) To UBound(arr1, 2)
arr2(i, l) = arr1(i, l)
Next l
Next i
End Function
動的配列をコピーするサンプルコード
一次元配列、二次元配列共に動的配列の場合は変数に代入するだけでいいです。
'■動的一次元配列をコピーする
Public Function Call_ArrayCopy()
Dim arr1() As Long
Dim arr2() As Long
ReDim arr1(3)
arr1(0) = 1
arr1(1) = 2
arr1(2) = 3
arr1(3) = 4
arr2 = arr1
End Function
'■動的二次元配列をコピーする
Public Function Call_ArrayCopy2D()
Dim arr1() As Long
Dim arr2() As Long
ReDim arr1(1, 1)
arr1(0, 0) = 1
arr1(0, 1) = 2
arr1(1, 0) = 3
arr1(1, 1) = 4
arr2 = arr1
End Function
関連記事
一次元/二次元配列の要素数の最小値を取得する【Lbound関数】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
配列の宣言(静的/動的/1次元/2次元)【ExcelVBA】



コメント