では、Excel VBAでの 動的配列 を初心者向けに、例題を交えてかみ砕いて説明します。
1. 動的配列とは?
- 通常の配列(静的配列)は、宣言時にサイズを決めます:
Dim numbers(4) As Integer ' 0~4の5個
VB- 動的配列 は、最初はサイズを決めずに宣言して、後から必要に応じてサイズを決める配列です。
Dim numbers() As Integer ' 最初はサイズ未定
VB💡 ポイント:
「あとからサイズを自由に変更できる配列」が動的配列です。
2. 動的配列の使い方
ステップ1: 配列の宣言
Dim numbers() As Integer ' 動的配列の宣言
VB- 括弧に数字を書かないのが特徴
- この時点ではまだメモリは確保されていません
ステップ2: 配列のサイズを決める(ReDim)
ReDim numbers(4) ' 0~4の5個分のメモリを確保
VBReDimで配列の大きさを決める- 後でまたサイズを変えたい場合にも
ReDimを使う
ステップ3: 配列に値を代入
numbers(0) = 10
numbers(1) = 20
numbers(2) = 30
numbers(3) = 40
numbers(4) = 50
ステップ4: 既存データを消さずにサイズ変更(ReDim Preserve)
ReDim Preserve numbers(6) ' 元のデータを残して、7個に拡張
numbers(5) = 60
numbers(6) = 70
💡 ポイント:
Preserveを付けない場合 → 元のデータは消えるPreserveを付ける場合 → データは残るが、最後の次元しか変更できない
3. 例題:動的配列で学生の点数を管理
問題:
ユーザーから人数を入力して、その人数分の数学の点数を配列に入れ、合計点と平均点を計算して表示する。
解答例
Sub DynamicArrayExample()
Dim n As Integer
Dim scores() As Integer
Dim i As Integer
Dim total As Integer
Dim avg As Double
' -----------------------
' 人数を入力
' -----------------------
n = InputBox("学生の人数を入力してください")
' -----------------------
' 配列サイズを決定
' -----------------------
ReDim scores(n - 1) ' 0~n-1まで
' -----------------------
' 点数を入力
' -----------------------
For i = 0 To n - 1
scores(i) = InputBox("学生" & (i + 1) & "の数学の点数を入力してください")
Next i
' -----------------------
' 合計と平均を計算
' -----------------------
total = 0
For i = 0 To n - 1
total = total + scores(i)
Next i
avg = total / n
' -----------------------
' 結果を表示
' -----------------------
MsgBox "合計点は " & total & "点です"
MsgBox "平均点は " & avg & "点です"
End Sub
VB4. ポイントまとめ
- 動的配列は「あとからサイズを決められる配列」
ReDimでサイズを決めるReDim Preserveで既存データを残してサイズ変更可能- ユーザーの入力やデータ量が変わるときに便利
💡 応用例:
- 3次元配列と組み合わせて「学期 × 生徒 × 教科」の点数を管理する
- データベースやCSVの行数が不明な場合に使える
