配列(一次元/二次元)

配列(静的/動的)を別の配列にコピーする【ExcelVBA】

配列を別の配列にコピーしたい場合があります。
注意しないといけないのは静的配列と動的配列でコードの記載方法が異なります。

静的配列をコピーするサンプルコード

一次元配列、二次元配列共に静的配列の場合は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】

コメント

タイトルとURLをコピーしました