VBAテクニック集 VBA一覧 変数・知識 文法・構文

【VBA】配列と変数の違いを初心者向けにわかりやすく徹底解説

Excel VBAを学び始めると、最初に必ず登場するのが「変数」です。そして少し慣れてくると、「配列」という新しい概念に出会います。このとき多くの初心者が、

  • 変数と配列は何が違うのか
  • どんなときに配列を使うべきなのか
  • 変数だけではダメなのか

といった疑問を抱きます。

実際、配列は初心者にとって少しハードルが高く感じられる存在です。しかし、配列の考え方を正しく理解すると、VBAの処理速度・コード量・保守性が一気に向上します。

この記事では、「変数とは何か」「配列とは何か」という超基本から始めて、なぜ配列が必要なのか、どんな違いがあるのかを、初心者目線で丁寧に解説します。

目次

✅ 【VBA】そもそも変数とは何か?

まずは、VBAにおける「変数」から整理しましょう。

変数とは、値を一時的に保存しておくための箱のようなものです。

・変数の基本例

Dim total As Long
total = 100

この場合、

  • total という名前の箱を用意
  • その中に「100」という値を入れている

というイメージになります。


・変数の特徴

変数には、次のような特徴があります。

  • 1つの変数には 1つの値 しか入らない
  • 値は上書きできる
  • 名前を付けることで意味を持たせられる
total = 200   ' 100 は消えて 200 に上書き

変数は、単一の値を扱うのに最適な仕組みです。


✅ 【VBA】変数だけで処理すると起こる問題

初心者のうちは、「変数だけで何とかしよう」と考えがちです。

・例:5人分の点数を変数で管理する場合

Dim score1 As Long
Dim score2 As Long
Dim score3 As Long
Dim score4 As Long
Dim score5 As Long

この書き方でも動作はしますが、次のような問題があります。

  • 人数が増えるたびに変数を追加しなければならない
  • 繰り返し処理が書けない
  • コードが長くなり、ミスが増える

もし100人分のデータを扱うことになったら、現実的ではありません。


✅ 【VBA】配列とは何か?変数との決定的な違い

ここで登場するのが「配列」です。

配列とは、1つの変数名で複数の値をまとめて管理できる仕組みです。


・配列のイメージ

  • 変数 → 1つの箱
  • 配列 → 同じ形の箱が並んだ棚
Dim scores(1 To 5) As Long

この1行で、

  • scores(1)
  • scores(2)
  • scores(3)
  • scores(4)
  • scores(5)

という 5個分の値を保存できる箱 が用意されます。


・配列に値を入れる例

scores(1) = 80
scores(2) = 75
scores(3) = 90
scores(4) = 60
scores(5) = 85

1つの名前で複数データを管理できるのが、配列の最大の特徴です。


✅ 【VBA】変数と配列の違いを一覧で比較

まずは、違いを表で整理します。

項目変数配列
保存できる値の数1つ複数
データ管理個別まとめて管理
繰り返し処理不向き得意
コード量増えやすい少なくできる
初心者の理解簡単やや難しい

このように、少量データは変数、多量データは配列という使い分けが基本になります。

参考:【VBA】データ型はなぜ必要?処理速度・メモリ・エラー観点から徹底解説




✅ 【VBA】配列を使うと何が便利なのか?

配列を使う最大のメリットは、「繰り返し処理」と相性が良いことです。

・For文と配列の組み合わせ

Dim scores(1 To 5) As Long
Dim i As Long

For i = 1 To 5
    scores(i) = i * 10
Next i

このように、

  • 同じ処理を
  • 番号だけ変えて
  • 何度も実行できる

というのが配列の強みです。

参考:【VBA】For文:配列を用いて項目名に合わせたデータ転記(実務レベル)


・変数だけでは難しい処理

total = score1 + score2 + score3 + score4 + score5

配列なら、

Dim total As Long
total = 0

For i = 1 To 5
    total = total + scores(i)
Next i

人数が変わっても、コードをほぼ変更せずに対応できます。


✅ 【VBA】初心者がつまずきやすい配列のポイント

配列は便利ですが、初心者が混乱しやすい点もあります。


・インデックス(番号)の考え方

scores(1)

この「1」は、配列の 番号(インデックス) です。

VBAでは、

  • 1から始める配列
  • 0から始める配列

のどちらも作れます。

Dim arr(0 To 4) As Long

初心者のうちは、1 To ○○ の形がおすすめです。


・配列は宣言が必要

Dim scores(1 To 5) As Long

変数よりも宣言が少し長くなるため、最初は戸惑いやすいですが、慣れると問題ありません。


・配列は1つずつ指定しないと値を取り出せない

MsgBox scores(3)

配列全体を一度に表示することはできません。
この点も初心者が混乱しやすいポイントです。


✅ 【VBA】配列を使わない方がよいケース

すべてを配列にすれば良いわけではありません。

・配列が不要な例

Dim userName As String
Dim totalPrice As Long
Dim isCompleted As Boolean
  • 値が1つだけ
  • 意味が明確
  • 繰り返し処理しない

このような場合は、通常の変数の方が分かりやすいです。


✅ 【VBA】セル操作で見る「変数」と「配列」の違い

Excel VBAでは、セル操作で違いが顕著に現れます。


・変数でセルを1つずつ処理する場合

Dim v As Variant
v = Range("A1").Value

これは問題ありませんが、複数セルでは非効率です。


・配列で複数セルをまとめて扱う場合

Dim data As Variant
data = Range("A1:A1000").Value

この1行で、1000件分のデータを配列として取得できます。


・配列を使うメリット

  • セルアクセス回数が激減
  • 処理速度が大幅に向上
  • 実務レベルの高速処理が可能

大量データを扱う場合、配列を使えるかどうかでVBAの評価が変わると言っても過言ではありません。


✅ 【VBA】一次元配列と二次元配列の違い(初心者向け)

・一次元配列

Dim arr(1 To 5) As Long

番号が1つだけのシンプルな配列。


・二次元配列(表データ)

Dim data As Variant
data = Range("A1:C10").Value
  • 行と列を持つ
  • Excelの表と同じ構造
MsgBox data(1, 1)  ' A1
MsgBox data(1, 2)  ' B1

初心者のうちは、
「一次元=リスト」「二次元=表」
と覚えると理解しやすくなります。


✅ 【VBA】配列を使うと処理速度が速くなる理由

変数を使ってセルを1つずつ処理すると、

  • Excel
  • VBA

のやり取りが何度も発生します。

一方、配列を使うと、

  • 一度でデータを取得
  • VBA内でまとめて処理
  • 一度で書き戻し

という流れになります。

これが、配列が高速と言われる最大の理由です。


✅ 【VBA】初心者におすすめの使い分けルール

迷ったときは、次の基準で判断すると失敗しにくくなります。

  • 値が1つ → 変数
  • 同じ種類のデータが複数 → 配列
  • 繰り返し処理したい → 配列
  • 表データを扱う → 配列
  • 設定値やフラグ → 変数

✅ 【VBA】実務では「変数+配列」を組み合わせる

実際のVBAでは、次のように併用します。

Dim data As Variant
Dim i As Long
Dim total As Long

data = Range("A1:A10").Value
total = 0

For i = 1 To 10
    total = total + data(i, 1)
Next i
  • データ本体 → 配列
  • カウンタ・結果 → 変数

この形が、最も基本かつ実務的です。


✅ 【VBA】RPA(UiPath)と配列の相性も非常に良い

VBAとRPAを組み合わせる現場では、

  • Excelから配列で一括取得
  • VBAで整形
  • RPAへ渡す

という流れがよく使われます。

配列を理解していると、

  • 処理速度が安定する
  • データ不整合が減る
  • 無人実行でも強い

といったメリットがあります。


✅ 【VBA】初心者が次に学ぶべきステップ

配列と変数の違いを理解したら、次は次のテーマに進むのがおすすめです。

  • For / For Each 文
  • 二次元配列の操作
  • 配列+Dictionary
  • Selectを使わない高速処理

この順番で学ぶと、VBAの理解が一気に深まります。


✅ まとめ:変数と配列の違いを理解するとVBAが一気に楽になる

  • 変数は「1つの値」を扱う箱
  • 配列は「複数の値」をまとめて扱う箱
  • 少量データは変数、多量データは配列
  • 配列は繰り返し処理と相性が良い
  • セル操作では配列が圧倒的に高速
  • 実務では変数と配列を組み合わせる

配列は最初こそ難しく感じますが、一度理解すると 「なぜ今まで変数だけで書いていたのか」 と思うほど強力な武器になります。

ぜひ今回の内容を参考に、
「動くマクロ」から「速くてきれいなマクロ」 へステップアップしてみてください。

    -VBAテクニック集, VBA一覧, 変数・知識, 文法・構文