【VBA】一次元配列の末尾に要素を追加する方法(汎用プロシージャでラクラク)
今回は、一次元配列の末尾に要素を追加する方法を紹介します。
VBAにはPythonやC#のようにlist型がなく、配列の末尾に要素を追加するのは意外と手間です。
末尾に要素を追加するには、Redim Preserveで要素数を増やして末尾に要素を代入する必要があります。
なかなか面倒な処理なのですが、この一連の処理を汎用化したプロシージャを公開するので活用してみてください。
一次元配列の末尾に要素を追加する方法
Function AddElmOneDimArr(ByVal arr, elm) As Variant
'''arrの末尾にelmを追加して返す
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr)) = elm
AddElmOneDimArr = arr
End Function
Sub Sample()
'''プロシージャを呼び出す側
Dim arr
arr = Array(1, 2, 3, 4, 5)
arr = AddElmOneDimArr(arr, 6) '配列の末尾に6が追加される
End Sub
1つ目のAddElmOneDimArrが一次元配列の末尾に要素を追加するプロシージャで、2つ目がこのプロシージャを呼び出すサンプルコードです。
このプロシージャは、元の配列arrと末尾に追加したい要素elmを引数で受け取って、要素を追加したい配列を返します。
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr)) = elm
やっていることは簡単で、Redim Preserveでデータを維持したまま要素数を1追加して、配列の末尾に要素elmを代入しているだけです。
UBoundは配列のインデックスの最大値を返す関数です。詳しくは下記の記事をご覧ください。
(タイトルに二次元配列とありますが、一次元配列も分かります)