- 「固定長配列と動的配列って何が違うの?」
- 「ReDimって何度も使っていいの?」
- 「配列の中身を初期化するにはどうすればいいの?」
配列の初期化をしっかり理解すれば、VBAでのデータ管理がグッと快適になります!
この記事では、固定長・動的配列それぞれの初期化方法や、ReDim/Eraseの正しい使い方を初心者向けにわかりやすく解説します。
固定長配列の初期化方法
固定長配列は、宣言時に要素数を指定するタイプの配列です。
要素数を変更できない分、処理がシンプルで高速です。
宣言と同時に初期化される例
Sub InitFixedArray()
Dim nums(0 To 4) As Integer ' 5つの要素を持つ配列
Dim i As Long
For i = 0 To 4
nums(i) = 0 ' 明示的に0で初期化(実際は省略可)
Next i
End Sub
固定長配列は宣言時点で自動的に初期値(数値型は0、文字列型は””)がセットされます。
明示的に初期値を入れる場合は上記のようにループで処理します。Eraseを使ってもメモリは解放されず、値がリセットされるだけなので注意しましょう。
動的配列の初期化と拡張
動的配列は、実行時にサイズを決定できる柔軟性の高い配列です。ユーザーの入力やデータ量に応じてサイズを調整できます。
ReDimでサイズを決めて初期化
Sub InitDynamicArray()
Dim data() As String
ReDim data(5) ' 要素数6の配列(0〜5)を初期化
data(0) = "Apple"
data(1) = "Banana"
End Sub
ReDimを使うと、その時点でメモリが確保され、初期値がセットされます。
ただし、このとき既存の配列の中身は消える点に注意しましょう。
ReDim Preserveで再定義&保持
ReDim Preserveを使うと、既存の配列内容を保持したまま配列サイズを再定義できます。ただし、変更できるのは最終次元だけです。
配列サイズを変更しつつデータを保持する例
Sub ExtendArray()
Dim nums() As Integer
ReDim nums(2)
nums(0) = 10
nums(1) = 20
nums(2) = 30
ReDim Preserve nums(4) ' 要素数を5に拡張(0〜4)
nums(3) = 40
nums(4) = 50
End Sub
このように、ReDim Preserve
を使えば、すでに格納されているデータを消さずに要素を追加できます。
データの追加・拡張処理に便利なテクニックです。
Eraseステートメントで配列をリセット
Eraseステートメントは、配列の初期状態に戻すための命令です。固定長と動的配列で動作が異なるので要注意。
配列の内容をリセット・解放する方法
Sub ResetArray()
Dim words() As String
ReDim words(3)
words(0) = "A"
Erase words ' メモリも解放される(Length = 0)
MsgBox "要素数: " & UBound(words) ' エラーになります!
End Sub
動的配列に対してEraseを使うと、配列自体が解放されてアクセス不能になります。
再度使いたい場合は、ReDimで再定義が必要です。一方、固定長配列ではEraseを使ってもメモリは保持されたまま、初期値に戻るだけです。
まとめ:初期化を理解すれば配列の扱いが楽になる!
VBAで配列を使いこなすためには、初期化と再定義のルールをしっかり押さえることが大事!
今回のポイントまとめ
- ✅ 固定長配列は宣言時にサイズが決まり、初期値が自動で入る!
- ✅ 動的配列はReDimでサイズ指定!Preserveで中身を保持可能!
- ✅ Eraseで初期化・解放!動的配列は注意が必要!
「なんとなくReDimしてたけど、やっと理解できた!」という状態を目指して、ぜひ配列マスターを目指しましょう😊
コメント