Excel VBA | 配列インデックス

VBA
スポンサーリンク

では、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

コードの解説

  1. Dim pref(3 To 6) As String
    → 配列 pref を作る。番号は3〜6。
  2. pref(3) = "東京都" など
    → それぞれの箱に県名を入れる
  3. target = "埼玉県"
    → 判定したい県名を変数に入れる
  4. For i = 3 To 6
    → 配列の箱を順番に確認
  5. If target = pref(i) Then
    → 配列の値と一致すれば「関東の県」と判定
  6. 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) = "ぶどう"
VB
  • fruits(1) という箱に "りんご" を入れる
  • fruits(2)"みかん" … と続ける
  • 配列の番号(インデックス)を意識して正しく入れることがポイント

3️⃣ 配列を順番に処理する

For i = 1 To 4
    MsgBox fruits(i)
Next i
VB
  • For i = 1 To 4 → 1から4まで繰り返す
  • fruits(i) → 配列のi番目の果物を取り出す
  • MsgBox → 取り出した値をメッセージボックスで表示

💡 ポイント

  • 配列と For 文を組み合わせると、同じ処理を繰り返し書かなくて済む
  • インデックスの範囲を変えるだけで、配列の要素数も変わる

4️⃣ 実行結果

1回目のメッセージボックス:りんご
2回目:みかん
3回目:バナナ
4回目:ぶどう

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました