Excel VBAを学び始めると、最初に必ず登場するのが「変数」です。そして少し慣れてくると、「配列」という新しい概念に出会います。このとき多くの初心者が、
- 変数と配列は何が違うのか
- どんなときに配列を使うべきなのか
- 変数だけではダメなのか
といった疑問を抱きます。
実際、配列は初心者にとって少しハードルが高く感じられる存在です。しかし、配列の考え方を正しく理解すると、VBAの処理速度・コード量・保守性が一気に向上します。
この記事では、「変数とは何か」「配列とは何か」という超基本から始めて、なぜ配列が必要なのか、どんな違いがあるのかを、初心者目線で丁寧に解説します。
目次
- ✅ 【VBA】そもそも変数とは何か?
- ・変数の基本例
- ・変数の特徴
- ✅ 【VBA】変数だけで処理すると起こる問題
- ・例:5人分の点数を変数で管理する場合
- ✅ 【VBA】配列とは何か?変数との決定的な違い
- ・配列のイメージ
- ・配列に値を入れる例
- ✅ 【VBA】変数と配列の違いを一覧で比較
- ✅ 【VBA】配列を使うと何が便利なのか?
- ・For文と配列の組み合わせ
- ・変数だけでは難しい処理
- ✅ 【VBA】初心者がつまずきやすい配列のポイント
- ・インデックス(番号)の考え方
- ・配列は宣言が必要
- ・配列は1つずつ指定しないと値を取り出せない
- ✅ 【VBA】配列を使わない方がよいケース
- ・配列が不要な例
- ✅ 【VBA】セル操作で見る「変数」と「配列」の違い
- ・変数でセルを1つずつ処理する場合
- ・配列で複数セルをまとめて扱う場合
- ・配列を使うメリット
- ✅ 【VBA】一次元配列と二次元配列の違い(初心者向け)
- ・一次元配列
- ・二次元配列(表データ)
- ✅ 【VBA】配列を使うと処理速度が速くなる理由
- ✅ 【VBA】初心者におすすめの使い分けルール
- ✅ 【VBA】実務では「変数+配列」を組み合わせる
- ✅ 【VBA】RPA(UiPath)と配列の相性も非常に良い
- ✅ 【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つの値」を扱う箱
- 配列は「複数の値」をまとめて扱う箱
- 少量データは変数、多量データは配列
- 配列は繰り返し処理と相性が良い
- セル操作では配列が圧倒的に高速
- 実務では変数と配列を組み合わせる
配列は最初こそ難しく感じますが、一度理解すると 「なぜ今まで変数だけで書いていたのか」 と思うほど強力な武器になります。
ぜひ今回の内容を参考に、
「動くマクロ」から「速くてきれいなマクロ」 へステップアップしてみてください。