こんにちは!
今回は、 VBAを使って配列にデータを追加する方法を考えます。
配列に要素を追加する
VBAを使って配列にデータを追加するためには、配列を再定義する必要があります。
つまり、既存の配列に新しい要素を追加することはできません。
以下に、簡単なコード例を紹介します。例えば、配列aに1, 2, 3が格納されている場合、配列aに4を追加するには、以下のようにコードを書きます。
1 2 3 4 |
Dim a() As Integer a = Array(1, 2, 3) ReDim Preserve a(UBound(a) + 1) a(UBound(a)) = 4 |
まず、配列aを再定義するために、ReDim Preserve
ステートメントを使用します。
これにより、配列aのサイズが1増加し、配列の要素を保持するために必要なメモリが再割り当てされます。
そして、新しい要素を配列の最後に追加するために、UBound
関数を使用して、現在の最大の添字を取得します。
この方法を使用すると、配列に1つの要素を追加するだけでなく、複数の要素を追加することもできます。
配列の先頭にデータを追加する方法
では、配列の先頭にデータを追加するにはどうすればいいのでしょうか?
結論から言えば、
VBAで配列の先頭にデータを追加するには、ReDim
ステートメントを使用して、配列を1つ大きく拡張し、元のデータを移動させる必要があります。
以下は、配列myArray
の先頭に新しい要素newValue
を追加する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Dim myArray() As Variant Dim newValue As Variant newValue = "New Value" ' 配列を1つ大きく拡張 ReDim Preserve myArray(UBound(myArray) + 1) ' 元のデータを1つずつ後ろに移動 Dim i As Integer For i = UBound(myArray) - 1 To 0 Step -1 myArray(i + 1) = myArray(i) Next i ' 新しい要素を先頭に追加 myArray(0) = newValue |
この例では、ReDim Preserve
ステートメントを使用して、既存の配列myArray
を1つ大きく拡張しています。Preserve
キーワードを使用することで、既存の配列の要素を保持し、新しい要素を追加することができます。
次に、For
ループを使用して、配列の要素を1つずつ後ろに移動し、最後に新しい要素を先頭に追加しています。
削除するには?
VBAで配列の先頭のデータを削除するには、配列の要素を1つずつ前にずらす必要があります。
以下は、配列myArray
の先頭の要素を削除する例です。
1 2 3 4 5 6 7 8 9 10 11 12 |
Dim myArray() As Variant ' myArrayから先頭の要素を削除する If UBound(myArray) > 0 Then Dim i As Integer For i = 1 To UBound(myArray) myArray(i - 1) = myArray(i) Next i ReDim Preserve myArray(UBound(myArray) - 1) Else ReDim myArray(-1 To -1) End If |
この例では、For
ループを使用して、配列の要素を1つずつ前にずらし、最後にReDim Preserve
ステートメントを使用して、配列のサイズを1つ小さくします。
また、配列に1つしか要素がない場合は、配列を再定義してサイズを0にします。
コメント