配列を別の配列にコピーしたい場合があります。
注意しないといけないのは静的配列と動的配列でコードの記載方法が異なります。
静的配列をコピーするサンプルコード
一次元配列、二次元配列共に静的配列の場合は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】
コメント