配列(一次元/二次元)

一次元配列で〇番目に要素を追加する(先頭、末尾、指定位置)【ExcelVBA】

配列内の任意の場所に、要素を追加したい場合があります。
今回の記事は先頭や末尾も含んだ指定位置へ、要素を追加する方法を説明します。

一次元配列で〇番目に要素を追加するサンプルコード

以下の手順で指定位置の要素を開けて、要素を追加するイメージです。
①配列を〇番目以降の要素を一つづつ後ろにずらす。(実際にはStep -1で末尾からループ)
②〇番目に指定要素を追加する。

'■一次元配列内の〇番目に要素を追加する
Public Sub Call_Array_Add(ByRef arr As Variant, ByVal num As Long, ByVal var As Variant)
    Dim i As Long

    '■配列を再定義し、最終の要素を増やす
    ReDim Preserve arr(UBound(arr) + 1)
    
    '■仮に指定位置が配列の要素の上限だった場合は指定位置を要素の末尾にする
    If num > UBound(arr) Then num = UBound(arr)
    
    '■追加したい〇番目の要素以降のを前につめて上書きコピーする
    For i = UBound(arr) To num + 1 Step -1
        arr(i) = arr(i - 1)
    Next i

    '■指定位置に要素を追加する
    arr(num) = var
End Sub

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

Public Sub test()
    Dim data() As Variant
    data = Array("あ", "い", "う", "お")
    
    '■指定位置に追加
    '3を指定したのでの4番目(0から数えて4つ目の要素に)「え」を追加
    Call Call_Array_Add(data, 3, "え")
    ' [あ い う お]が
    ' [あ い う え お]になる
    
    '■末尾に追加
    '100を指定したのでの配列の最大値6番目(0から数えて5つ目の要素に)「か」を追加
    Call Call_Array_Add(data, 100, "か")
    ' [あ い う え お]が
    ' [あ い う え お か]になる
    
    '■先頭に追加
    '0を指定したのでの配列の0番目(0から数えて1つ目の要素に)「XXX」を追加
    Call Call_Array_Add(data, 0, "XXX")
    ' [あ い う え お か]が
    ' [XXX あ い う え お か]になる
    
End Sub

関連記事

コメント

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