配列(一次元/二次元)

二次元配列で〇番目に空白行を追加する【ExcelVBA】

二次元配列内の指定した列(縦方向の要素)に空白行を追加したい場合があります。
今回の記事は特定の〇番目の指定行を列追加するコードを説明します。

二次元配列で〇番目の指定行に空白行を追加するサンプルコード

以下の手順で要素を詰めて上書きするイメージです。
①既存配列の行数+1でtmpを定義
②配列を〇番目の要素が来たら、その列は空白行として追加、それ以降は一つ前の要素を書込みする。

'■二次元配列に空白行を追加
Public Function call_Array2D_AddRow(tmp1 As Variant, num As Long)
    Dim tmp2 As Variant
    '■元の配列(tmp1)より列を一つ大きく定義する
    ReDim tmp2(UBound(tmp1, 1) + 1, UBound(tmp1, 2))
     
    Dim flg As Long: flg = 0
    Dim r As Long
    Dim c As Long
     
    For r = LBound(tmp2, 1) To UBound(tmp2, 1)
        '■num(追加したい列番号)が一致すれば空白で列を書き込み
        '  それ以降は一つ前の列を書き込みする
        If r = num Then
            For c = LBound(tmp2, 2) To UBound(tmp2, 2)
                tmp2(r, c) = ""
            Next
            flg = 1
        Else
            For c = LBound(tmp2, 2) To UBound(tmp2, 2)
                tmp2(r, c) = tmp1(r - flg, c)
            Next
        End If
    Next
    call_Array2D_AddRow = tmp2
End Function

実際の使い方は以下のように使用します。

Public Sub test()
    Dim data() As Variant
    ReDim data(2, 2)
    data(0, 0) = 1
    data(0, 1) = "あ"
    data(0, 2) = "A"                    '1 あ A
    data(1, 0) = 2
    data(1, 1) = "い"                   '2 い B
    data(1, 2) = "B"
    data(2, 0) = 3                      '3 う C
    data(2, 1) = "う"
    data(2, 2) = "C"
    
    
    '■1を指定したのでの2番目「0、1」の2番目に行を追加
    data = call_Array2D_AddRow2(data, 1)
    '1  あ A
    '2  い B
    '3  う C
    '↓↓↓
    '1  あ A
    '"" "" ""
    '2  い B
    '3  う C
    
    '「1」と「2」の間に空白行が追加される

End Sub

関連記事

コメント

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