では、Excel VBAの 多次元配列 を、プログラミング初心者向けにかみ砕いて、具体的な例題を交えて詳しく説明します。
1. 多次元配列って何?
例えると
- 1次元配列 → 「一列に並んだ箱」
例:「リンゴ、バナナ、オレンジ」を順番に置く感じ - 2次元配列 → 「行と列がある表」
例:生徒の名前と点数を表にしたいとき
| 名前 | 数学 | 国語 |
|---|---|---|
| 佐藤 一郎 | 80 | 90 |
| 山田 花子 | 75 | 85 |
- 3次元配列 → 「棚が複数あって、各棚に箱があって、その中にモノがあるイメージ」
→ 今回は初心者向けなので、2次元配列まで理解できれば十分です。
2. 配列の宣言の仕方(2次元配列)
Dim scores(1, 2) As Integer
VBscoresが配列の名前(1, 2)は 行数 × 列数- 0行目〜1行目 → 2行
- 0列目〜2列目 → 3列
- データ型は
Integer(整数)
3. 配列に値を入れてみよう
' 1行目
scores(0, 0) = 佐藤 一郎
scores(0, 1) = 80
scores(0, 2) = 90
' 2行目
scores(1, 0) = 山田 花子
scores(1, 1) = 75
scores(1, 2) = 85
VB(行, 列)の順番で値を入れます- 0から数えるのがポイントです(0スタート)
4. 配列の値を取り出す
MsgBox scores(0, 0) & "の数学の点数は " & scores(0, 1) & "点です"
VB→ 結果:
佐藤 一郎の数学の点数は80点です
5. ループを使うと便利
長い配列もループで簡単に表示できます。
Dim i As Integer, j As Integer
For i = 0 To 1 '行
For j = 0 To 2 '列
MsgBox scores(i, j)
Next j
Next i
VB- 外側のループ:行を回す
- 内側のループ:列を回す
6. 練習問題(初心者向け)
問題:
2人の生徒の国語・数学の点数を2次元配列に入れて、各生徒の合計点を表示するプログラムを書こう。
ヒント:
- 配列は
scores(1, 2) - 点数は適当に入れる(例:80, 90, 75, 85)
- ループを使うと便利
7. 練習問題の解答例
Sub Sample2DArray()
Dim scores(1, 2) As Integer
Dim i As Integer, total As Integer
' 名前
scores(0, 0) = "佐藤 一郎"
scores(1, 0) = "山田 花子"
' 数学
scores(0, 1) = 80
scores(1, 1) = 75
' 国語
scores(0, 2) = 90
scores(1, 2) = 85
' 合計点を計算
For i = 0 To 1
total = scores(i, 1) + scores(i, 2)
MsgBox scores(i, 0) & "の合計点は " & total & "点です"
Next i
End Sub
VB- 実行すると2人分の合計点が表示されます。
- この形で、多次元配列の扱い方が理解できます。
ポイントまとめ
- 多次元配列は行×列の表のような構造
(行, 列)の順で値を入れる- 配列のインデックスは0から始まる
- ループでまとめて処理すると便利
