では Excel VBA の 「配列の宣言と使い方」 を、プログラミング初心者向けに、例題を交えて丁寧に説明します。
1. 配列って何?
普通の変数は「1つのデータしか入らない箱」です。
Dim name As String
name = "山田"
VB- この
nameには「山田」しか入れられません。 - もし他の名前も扱いたいなら、変数をいくつも作る必要があります。
配列を使うと…
「1つの箱で複数のデータをまとめて管理できる」 ようになります。
例えば 3 人の名前を管理したいとき:
Dim names(2) As String ' 0,1,2の3つ分の箱
names(0) = "山田"
names(1) = "佐藤"
names(2) = "伊藤"
VBnames(0)→ 山田names(1)→ 佐藤names(2)→ 伊藤
💡 ポイント: 配列は0から数える
- 上の例では
Dim names(2)と書くと「0〜2」の3つ分の要素を持つ配列になります。
2. 配列の宣言の仕方
基本構文は:
Dim 変数名(要素数-1) As データ型
VB要素数… 配列に入れたいデータの数データ型… String, Integer, Double など普通の変数と同じ
例:好きな果物を5種類入れる配列
Dim fruits(4) As String ' 0~4 の5個分
fruits(0) = "りんご"
fruits(1) = "みかん"
fruits(2) = "バナナ"
fruits(3) = "ぶどう"
fruits(4) = "もも"
VB3. 配列の便利な使い方(ループと組み合わせる)
配列はループ(For 文)と相性がいいです。
例:配列に入った果物をセルに順番に書き出す
Sub FruitList()
Dim fruits(4) As String
Dim i As Integer
fruits(0) = "りんご"
fruits(1) = "みかん"
fruits(2) = "バナナ"
fruits(3) = "ぶどう"
fruits(4) = "もも"
' 0~4まで順番に出力
For i = 0 To 4
Cells(i + 1, 1).Value = fruits(i)
Next i
End Sub
VB✅ 結果
- Excel の A1 → りんご
- Excel の A2 → みかん
- …
- Excel の A5 → もも
💡 ポイント:Cells(row, column) でセルを指定できます。i+1 は行番号を 1 から始めるため。
4. 配列を使った簡単な判定例
配列の中にあるデータかどうかを調べることもできます。
Sub CheckFruit()
Dim fruits(2) As String
Dim i As Integer
Dim msg As String
fruits(0) = "りんご"
fruits(1) = "みかん"
fruits(2) = "バナナ"
Dim target As String
target = "ぶどう"
msg = target & " はリストにありません"
For i = 0 To 2
If fruits(i) = target Then
msg = target & " はリストにあります"
End If
Next i
MsgBox msg
End Sub
VB- もし
targetが配列に入っていたら「あります」、なければ「ありません」と表示されます。
初心者向けのまとめ
- 配列は 複数のデータをまとめて管理する箱
- 宣言するときは
Dim 配列名(要素数-1) As 型 - インデックスは 0からスタート
- 要素へのアクセスは
配列名(インデックス) - For ループと組み合わせると便利
練習問題
- 5 人の学生の名前を配列に入れて、順番にセル B1〜B5 に出力するプログラムを書いてみよう。
- 配列の中に「佐藤」がいるかどうかを調べて、結果をメッセージボックスで表示してみよう。
解答例と解説
練習問題1
内容: 5人の学生の名前を配列に入れて、順番にセル B1〜B5 に出力する
解答例
Sub StudentList()
' 1️⃣ 配列を宣言(5人分)
Dim students(4) As String ' インデックス0~4の5個分
Dim i As Integer ' ループ用の変数
' 2️⃣ 配列にデータを格納
students(0) = "山田"
students(1) = "佐藤"
students(2) = "伊藤"
students(3) = "田中"
students(4) = "鈴木"
' 3️⃣ ループで順番にセルに出力
For i = 0 To 4
Cells(i + 1, 2).Value = students(i) ' B列に出力
Next i
End Sub
VBステップごとの解説
Dim students(4) As String- 配列
studentsを作る - インデックス 0~4 で5人分
- 配列
- 配列に名前を格納
students(0) = "山田"のように1つずつセット
For i = 0 To 4- 配列の要素を順番に取り出すループ
Cells(i + 1, 2)で B1〜B5 に書き込むi+1にする理由 → Excel の行は1から始まるため
練習問題2
内容: 配列の中に「佐藤」がいるかどうかを調べて、結果をメッセージボックスで表示
解答例
Sub CheckStudent()
' 1️⃣ 配列を宣言
Dim students(4) As String
Dim i As Integer
Dim msg As String
' 2️⃣ 配列に名前を格納
students(0) = "山田"
students(1) = "佐藤"
students(2) = "伊藤"
students(3) = "田中"
students(4) = "鈴木"
' 3️⃣ 調べたい名前を変数にセット
Dim target As String
target = "佐藤"
' 初期メッセージ(見つからない場合)
msg = target & " はリストにありません"
' 4️⃣ ループで配列をチェック
For i = 0 To 4
If students(i) = target Then
msg = target & " はリストにあります"
Exit For ' 見つかったらループ終了
End If
Next i
' 5️⃣ 結果を表示
MsgBox msg
End Sub
VBステップごとの解説
- 配列
studentsを宣言 - 名前を配列にセット
- 探す名前を
targetにセット - 配列を For ループで順番にチェック
If students(i) = target Thenで一致するか確認- 見つかったら
msgを変更してExit Forで終了
MsgBox msgで結果を表示
✅ ポイント
Exit Forを使うと、無駄なループを回さずに済む- 配列の要素は 0からスタート なのでループも0から
