要素数が変動する場合の対応

プログラムを作成していると、最初から要素数が決まっていない配列を扱いたい場面がよくあります。
たとえば「ユーザーが入力した数だけ値を記録したい」といったケースです。

このような 要素数があとから変わる可能性がある場合には、「可変長配列」と「ReDim(リディム)」を使います。


1. 可変長配列を宣言する

要素数をあとで決めたい場合、まずは配列のサイズを指定せずに宣言します。

Dim items() As String

このように、丸かっこの中を空にしておくことで、あとで自由にサイズを指定できる配列となります。


2. ReDimで配列のサイズを決める

ReDim を使うと、配列のサイズをプログラム中で設定できます。

ReDim items(1 To 3)

この命令によって、items 配列は 1 から 3 までの3つの要素を持つようになります。


3. 要素数を変更する

後からさらに要素数を変更したい場合も、ReDim をもう一度使います。

ただし、このとき注意が必要です。

ReDim を実行すると、それまでに代入した値はすべて消えてしまうのです。


4. 値を保持したままサイズ変更したいときは ReDim Preserve

「今ある値は残しておいて、さらに要素を増やしたい」
そんなときは ReDim Preserve を使います。

ReDim Preserve items(1 To 5)

このように書けば、既存の1~3番目の値はそのまま残り、4番目・5番目の領域が新たに追加されます。


5. 使用例

Dim items() As String
Dim i As Integer

ReDim items(1 To 2)
items(1) = "リンゴ"
items(2) = "バナナ"

'要素を追加する
ReDim Preserve items(1 To 3)
items(3) = "オレンジ"

For i = 1 To 3
MsgBox items(i)
Next i

このコードでは、最初に2つの果物を入れてから、3つ目の果物を追加しています。
すべての値は失われることなく表示されます。

リンゴ
バナナ
オレンジ

6. ReDim Preserve の注意点

  • Preserve を使えるのは最後の次元だけです(多次元配列では制限があります)
  • 処理速度やメモリに影響するため、頻繁な拡張が必要な場合は、事前に余裕をもってサイズを確保するなどの工夫も重要です

7. まとめ

操作内容
可変長配列の宣言Dim arr()
要素数の初期設定ReDim arr(1 To 5)
要素数の変更(破棄あり)ReDim arr(1 To 10) → 以前の値は消える
要素数の変更(値保持)ReDim Preserve arr(1 To 10) → 以前の値を保持しながら変更

このように、要素数が変動する場合は 可変長配列 + ReDim(Preserve) を組み合わせて使うのがポイントです。
配列サイズが決まっていないときも、柔軟に対応できるようになります。

コメント

タイトルとURLをコピーしました