Excel VBA | 配列の「宣言」

VBA
スポンサーリンク

では 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) = "伊藤"
VB
  • names(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) = "もも"
VB

3. 配列の便利な使い方(ループと組み合わせる)

配列はループ(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 が配列に入っていたら「あります」、なければ「ありません」と表示されます。

初心者向けのまとめ

  1. 配列は 複数のデータをまとめて管理する箱
  2. 宣言するときは Dim 配列名(要素数-1) As 型
  3. インデックスは 0からスタート
  4. 要素へのアクセスは 配列名(インデックス)
  5. For ループと組み合わせると便利

練習問題

  1. 5 人の学生の名前を配列に入れて、順番にセル B1〜B5 に出力するプログラムを書いてみよう。
  2. 配列の中に「佐藤」がいるかどうかを調べて、結果をメッセージボックスで表示してみよう。

解答例と解説

練習問題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

ステップごとの解説

  1. Dim students(4) As String
    • 配列 students を作る
    • インデックス 0~4 で5人分
  2. 配列に名前を格納
    • students(0) = "山田" のように1つずつセット
  3. 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

ステップごとの解説

  1. 配列 students を宣言
  2. 名前を配列にセット
  3. 探す名前を target にセット
  4. 配列を For ループで順番にチェック
    • If students(i) = target Then で一致するか確認
    • 見つかったら msg を変更して Exit For で終了
  5. MsgBox msg で結果を表示

✅ ポイント

  • Exit For を使うと、無駄なループを回さずに済む
  • 配列の要素は 0からスタート なのでループも0から
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました