【PR】を含みます。

プログラミング

【VBA】配列に値を動的に追加する方法|ReDim Preserveで簡単実装!

VBA 配列に値を動的に追加する方法|ReDim Preserveで簡単実装!

業務でVBAを使っていると、「配列にあとから値を追加したい」という場面がよくありますよね。

本記事では、VBAで配列に値を動的に追加する関数を紹介し、使い方もわかりやすく解説します。

VBAで配列を使う基本

VBAの配列には、以下の2種類があります。

  • 固定長配列:最初からサイズを指定して使う

  • 動的配列:あとからサイズを変更できる(ReDimを使う)

値をあとから追加するには、動的配列 + ReDim Preserveを使うのがポイントです。

配列に値を動的に追加するには?【ReDim Preserveの使い方】

VBAで動的に配列に値を追加するには、以下のような手順を踏みます。

  1. ReDim Preserveで配列のサイズを変更

  2. UBoundで最終インデックスを取得

  3. 新しい要素に値を代入

【コピペOK】配列に値を追加する関数(add_to_arr)

VBA
Copy
Public Function add_to_arr(ByVal arr As Variant, ByVal val As Variant) As Variant
    '配列に値を追加
    Dim reArr As Variant
    If IsArray(arr) Then
        ' 配列が存在する場合、既存の配列を拡張して値を追加
        reArr = arr
        ReDim Preserve reArr(UBound(reArr) + 1)
        reArr(UBound(reArr)) = val
    Else
        ' 配列が存在しない場合、新しい配列を作成し、値を追加
        ReDim reArr(0)
        reArr(0) = val
    End If
    add_to_arr = reArr
End Function

add_to_arr関数の使い方

第一引数のarrには値を追加したい配列を、第二引数のvalには配列に追加する値を指定することで、配列に値を動的に追加できます。

各引数について

  1. arr (必須)
    値を追加したい配列を指定します。
  2. val (必須)
    配列に追加する値を指定します。

【サンプルコード】VBAで配列に値を追加する実例

以下VBAコードは、元の配列myArray = Array(1, 2, 3, 4)5を追加し、最終的に{1, 2, 3, 4, 5}になります。

VBA
Copy
Sub sample()
    Dim myArray As Variant
    myArray = Array(1, 2, 3, 4)
    ' 配列に値を追加
    myArray = add_to_arr(myArray, 5)
End Sub
Public Function add_to_arr(ByVal arr As Variant, ByVal val As Variant) As Variant
    '配列に値を追加
    Dim reArr As Variant
    If IsArray(arr) Then
        ' 配列が存在する場合、既存の配列を拡張して値を追加
        reArr = arr
        ReDim Preserve reArr(UBound(reArr) + 1)
        reArr(UBound(reArr)) = val
    Else
        ' 配列が存在しない場合、新しい配列を作成し、値を追加
        ReDim reArr(0)
        reArr(0) = val
    End If
    add_to_arr = reArr
End Function

まとめ:配列の追加は関数化で効率UP!

配列に値を動的に追加する処理は、毎回ReDim Preserveを書くのは面倒。

今回紹介したadd_to_arr関数を使えば、配列の拡張をシンプルに共通化できます。

-プログラミング
-, ,