このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】一次元配列の末尾に要素を追加する方法(汎用プロシージャでラクラク)

今回は、一次元配列の末尾に要素を追加する方法を紹介します。

VBAにはPythonやC#のようにlist型がなく、配列の末尾に要素を追加するのは意外と手間です。

末尾に要素を追加するには、Redim Preserveで要素数を増やして末尾に要素を代入する必要があります。

なかなか面倒な処理なのですが、この一連の処理を汎用化したプロシージャを公開するので活用してみてください。

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

一次元配列の末尾に要素を追加する方法

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は配列のインデックスの最大値を返す関数です。詳しくは下記の記事をご覧ください。
(タイトルに二次元配列とありますが、一次元配列も分かります)

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

VBA

Posted by やろまい