では、Excel VBA の「配列のインデックス範囲を変更する方法」を、プログラミング初心者向けにやさしく、例題を交えて詳しく説明します。
1. 配列とは?
配列とは、**「同じ種類のものをまとめて入れておける箱の集まり」**です。
例えば、「好きなフルーツ3つ」を1つずつ変数に入れるとこうなります:
Dim fruit1 As String
Dim fruit2 As String
Dim fruit3 As String
fruit1 = "りんご"
fruit2 = "みかん"
fruit3 = "バナナ"
VBこれでも良いですが、数が増えると大変です。
そこで配列を使うとこう書けます:
Dim fruits(0 To 2) As String
fruits(0) = "りんご"
fruits(1) = "みかん"
fruits(2) = "バナナ"
VB✅ 0 To 2 は「0から2までのインデックス番号を持つ3つの箱」という意味です。
2. インデックス番号を自由に決める
VBA では配列の 最初の番号(インデックス) を自由に設定できます。
Dim fruits(3 To 5) As String
fruits(3) = "りんご"
fruits(4) = "みかん"
fruits(5) = "バナナ"
VB- これだと
fruits(0)は使えません。 - インデックス番号が「3,4,5」の3つの箱になります。
💡 ポイント:
- 配列の番号は 自分で決められる
- でも統一しないと後でコードを読むときに迷うので注意
3. 配列を使った簡単な例題
例題:関東の県かどうか判定する
目標
配列に「関東の県」を入れて、入力された県名が関東かどうか判定します。
コード例
Sub CheckKanto()
Dim pref(3 To 6) As String
Dim i As Integer
Dim target As String
Dim msg As String
' 配列に県名をセット
pref(3) = "東京都"
pref(4) = "神奈川県"
pref(5) = "千葉県"
pref(6) = "埼玉県"
' 判定したい県名
target = "埼玉県"
msg = "関東以外の県です"
' 配列の中を順番にチェック
For i = 3 To 6
If target = pref(i) Then
msg = "関東の県です"
End If
Next i
' 結果をシートに表示
Range("A2").Value = msg
End Sub
VBコードの解説
Dim pref(3 To 6) As String
→ 配列prefを作る。番号は3〜6。pref(3) = "東京都"など
→ それぞれの箱に県名を入れるtarget = "埼玉県"
→ 判定したい県名を変数に入れるFor i = 3 To 6
→ 配列の箱を順番に確認If target = pref(i) Then
→ 配列の値と一致すれば「関東の県」と判定Range("A2").Value = msg
→ 結果をExcelシートに表示
4. 配列の便利なポイント
- 「いくつの箱を作るか」「箱の番号をどこから始めるか」を自由に決められる
For文と組み合わせると、同じ処理を何回も書かずに済む- 大量のデータや繰り返し処理で特に便利
5. 練習問題(初心者向け)
問題
好きな果物4種類を「1から4まで」のインデックスで配列に入れ、
順番にメッセージボックスで表示するマクロを作ってみましょう。
6. 解答と解説
練習問題のおさらい
内容
- 配列のインデックスを 1~4 に設定
- 好きな果物4種類を配列に格納
- 配列の内容を順番に メッセージボックス で表示
模範解答コード
Sub ShowFruits()
' 配列を作成(インデックスは1~4)
Dim fruits(1 To 4) As String
Dim i As Integer
' 配列に果物をセット
fruits(1) = "りんご"
fruits(2) = "みかん"
fruits(3) = "バナナ"
fruits(4) = "ぶどう"
' 配列の内容を順番に表示
For i = 1 To 4
MsgBox fruits(i)
Next i
End Sub
VBステップごとの解説
1️⃣ 配列を宣言する
Dim fruits(1 To 4) As String
VB- 配列
fruitsを作ります - インデックスは 1~4 → 4つの箱を用意
As String→ 文字列型のデータを入れることを指定
2️⃣ 配列に値を入れる
fruits(1) = "りんご"
fruits(2) = "みかん"
fruits(3) = "バナナ"
fruits(4) = "ぶどう"
VBfruits(1)という箱に"りんご"を入れるfruits(2)に"みかん"… と続ける- 配列の番号(インデックス)を意識して正しく入れることがポイント
3️⃣ 配列を順番に処理する
For i = 1 To 4
MsgBox fruits(i)
Next i
VBFor i = 1 To 4→ 1から4まで繰り返すfruits(i)→ 配列のi番目の果物を取り出すMsgBox→ 取り出した値をメッセージボックスで表示
💡 ポイント
- 配列と
For文を組み合わせると、同じ処理を繰り返し書かなくて済む - インデックスの範囲を変えるだけで、配列の要素数も変わる
4️⃣ 実行結果
1回目のメッセージボックス:りんご
2回目:みかん
3回目:バナナ
4回目:ぶどう
