もくじ
業務でVBAを使っていると、「配列にあとから値を追加したい」という場面がよくありますよね。
本記事では、VBAで配列に値を動的に追加する関数を紹介し、使い方もわかりやすく解説します。
VBAで配列を使う基本
VBAの配列には、以下の2種類があります。
固定長配列:最初からサイズを指定して使う
動的配列:あとからサイズを変更できる(
ReDim
を使う)
値をあとから追加するには、動的配列 + ReDim Preserveを使うのがポイントです。
配列に値を動的に追加するには?【ReDim Preserveの使い方】
VBAで動的に配列に値を追加するには、以下のような手順を踏みます。
ReDim Preserve
で配列のサイズを変更UBound
で最終インデックスを取得新しい要素に値を代入
【コピペ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
には配列に追加する値を指定することで、配列に値を動的に追加できます。
各引数について
- arr (必須)
値を追加したい配列を指定します。 - 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
関数を使えば、配列の拡張をシンプルに共通化できます。
リンク