VBAで配列を使いこなす|基礎と実例まとめ

ようこそ♪ささぽんのExcel教室へ。
今回はVBAにおける「配列の使い方と実例」をお届けします!
たとえば、「複数の項目に対して同じ処理をしたい」と思ったことはありませんか?
商品の一覧に同じ書式を設定したり、月ごとのデータを順番に処理したり…この処理を複数の変数を定義して書くのは手間がかかりますよね。
そんなときに便利なのが、配列という仕組みです。
配列を使えば、いちいち一つずつ指定しなくても、まとめて効率よく処理することができます。
この記事では、配列の基本から使い方、実務での活用例までを解説します!

この記事は以下のような方におすすめです!
・繰り返し処理をもっとシンプルに書きたい方
・複数データをスマートに扱いたい方
・配列の基本や考え方を1から理解したい方
このブログは「基礎からExcelマクロを学びたいと考えている方」や、
「独学での習得に壁を感じた方」に向けて、やさしく、わかりやすく、丁寧に解説しています。
読み終わるころにはきっと、
「Excelマクロって意外と簡単かも!」「もっとやってみたい!」と思えるはず。
一緒に楽しく学びながら、Excelマクロ使いを目指しましょう!
目次
1. 配列とは?VBAで使う理由と基本の考え方
◼︎配列ってなに?Excelでのイメージから考えよう
プログラミングにおける「配列」は、複数のデータをひとまとめにして扱える入れ物のようなものです。
Excelで例えると、1列にずらっと並んだ「売上データ」や、横一列にある「月別の数値」などが近いイメージです。
VBAの中で、こうした連続した値を1つの変数でまとめて扱えるのが「配列」です。
通常の変数は、1つの値しか保存できません。
一方配列を使えば、たとえば「A1〜A5の5つの数字」など複数の値をひとまとめにして格納できます。
これにより、処理の記述がコンパクトにでき、あとから修正もしやすくなります。

◼︎なぜVBAで配列を使うと便利なの?
VBAで配列を使う最大のメリットは、「繰り返し処理との相性が抜群」なことです。
たとえば、以下のような場面で配列は特に役立ちます:
- 同じようなデータを一括で処理したいとき
- データの一時保存やまとめての加工が必要なとき
- ループ処理で効率よく値を操作したいとき
通常、個別に変数を用意して処理するには何行もコードが必要になりますが、配列を使えばそれがすっきり1つの変数で完結します。
それによりコードの読みやすさも保たれ、実務でのミス削減にもつながります。
◼︎配列の種類と使い分けを知ろう(一次元・多次元)
配列にはいくつかの種類がありますが、まずは以下の2つを押さえておきましょう:
種類 | 説明 | 例 |
一次元配列 | 横または縦一列に並ぶデータ | 月別売上データ(1月〜12月) |
多次元配列 | 表のように行×列の形で並ぶデータ | 売上表(店舗×月別) |
初心者のうちは、まずは一次元配列をしっかり理解するのがポイントです。
実務でも、1列や1行のデータ処理で十分に活用できます。
ここまで紹介してきた通り、配列とは複数のデータをひとつにまとめて扱うためのVBAの仕組みです。
Excelの列や行のような感覚で使え、繰り返し処理との相性も抜群です。
まずは一次元配列を理解し、基本的な使い方を身につけましょう。
2.配列の宣言と代入のしかた【コード例あり】
◼︎配列の宣言方法を覚えよう(固定長・可変長)
VBAで配列を使うには、まず「宣言」を行います。これは、配列という箱を用意する作業です。
主な宣言方法には、以下の2つがあります:
- 固定長配列:サイズ(要素の数)を最初に決める
- 可変長配列:あとからサイズを変更できる
【固定長配列の例】
Dim fruits(2) As String
fruits(0) = “りんご”
fruits(1) = “バナナ”
fruits(2) = “みかん”
このコードは最初の宣言部分で要素数を定義し、固定しています。
要素番号は0から始まるので、fruits(2)というのは3つまでの要素を持てる配列ということになります。
【可変長配列の例】
Dim prices() As Integer
ReDim prices(2)
prices(0) = 100
prices(1) = 200
prices(2) = 300
ReDimを使うことで、あとからサイズ(要素の数)を何度でも変更できるのが特徴です。
◼︎配列に値を代入する方法【基本パターン】
配列への代入は、1つずつ指定する方法が基本です。
たとえば以下のように書きます:
Dim colors(2) As String
colors(0) = “赤”
colors(1) = “青”
colors(2) = “緑”
このように、配列名(インデックス番号) = 値の形で代入します。
なお、複数のデータを一気に扱いたい場合は、配列にまとめて格納しておくと便利です。
◼︎一括代入とループ代入の違いを理解しよう
JavaScriptなどと違い、VBAでは配列への「一括代入」はできません。
ですが、配列に格納する値がパターン化されている場合は、ループ処理を使って書くことができます。
例えば:
Dim i As Integer
Dim nums(4) As Integer
For i = 0 To 4
nums(i) = i * 10
Next i
このように、ループで値を代入することで擬似的に一括代入のような処理ができます。
実務でも、大量のデータを処理する際にループ+配列の組み合わせは非常に便利です。
3. 配列の値を取り出して処理する方法
◼︎配列から値を取り出す基本の書き方
配列に格納した値は、インデックス番号を使って1つずつ取り出すことができます。
例えば、次のような書き方で1つの値を参照します:
Dim fruits(2) As String
fruits(0) = “りんご”
fruits(1) = “バナナ”
fruits(2) = “みかん”
MsgBox fruits(1) ’ 結果:バナナ
このように、配列名(番号)の形式で呼び出せます。
値を使って表示したり、条件判定に使ったりすることが可能です。
◼︎Forループで配列の中身を順番に処理しよう
配列の中身をすべて順に処理したいときは、Forループが便利です。
Forループの使い方については、以下の記事を参考にしてください!
例えば:
Dim colors(2) As String
Dim i As Integer
colors(0) = “赤”
colors(1) = “青”
colors(2) = “緑”
For i = 0 To 2
MsgBox colors(i)
Next i
このように書けば、配列に入ったすべての値を順番に取り出して表示できます。
配列のサイズが変わる場合は、次に紹介するUBound関数を使うと便利です。
◼︎UBound・LBound関数で配列の範囲を自動で取得する
配列の「最小のインデックス(LBound)」と「最大のインデックス(UBound)」を取得する関数を使うことで、活用することでより柔軟に配列の設定をすることができます。
例えば:
Dim data(3) As Integer
Dim i As Integer
For i = LBound(data) To UBound(data)
data(i) = i * 2
Next i
このようにすれば、配列の範囲に応じて自動でループの回数を調整できます。
固定長でも可変長でも柔軟に対応できるため、実務では非常に重宝します。
このように配列に入れた値は、今までの配列と同じようにインデックス番号を使って簡単に取り出せます。
また、Forループと組み合わせたり、LBoundやUBoundを活用することで配列のサイズに左右されない柔軟なコードが書けるようになります!
4. 配列を使うときの注意点と落とし穴
◼︎インデックス範囲のミスに気をつけよう
配列を扱う際に特に多いのが、「存在しない番号」にアクセスしてしまうエラーです。
たとえば、Dim items(2)と宣言した場合、使えるのはitems(0)〜items(2)の3つです。
これをうっかりitems(3)と書くと、「下付きが範囲外です(Subscript out of range)」というエラーになります。
ループなどで扱うときは、UBound関数で範囲を自動取得するように書いておくと、エラーが起こらず安全に使うことができます。
◼︎配列の初期化と再利用に気をつけよう
可変長配列は、ReDimでサイズを変更できますが、この操作は配列の中身を消してしまうことがあります。
例えば、以下のコードでは値が消えてしまいます:
ReDim items(3)
items(0) = “A”
ReDim items(5) ’ この時点でitems(0)は空になります
データを残したままサイズ変更したい場合は、Preserveキーワードを使います:
ReDim Preserve items(5)
ただし、Preserveを使うと、一部の構造が制限される(例:多次元配列では使えない)ので注意が必要です。
◼︎ReDimによるサイズ変更に気をつけよう
ReDimは強力な機能ですが、繰り返し多用すると処理速度が落ちる可能性があります。
これは、サイズ変更のたびにメモリの再確保が発生するためです。
大量のデータを扱う場合は、あらかじめ十分なサイズで配列を確保しておくように心がけましょう。
配列は便利な反面、使い方を誤るとエラーや処理の非効率につながります。
特にインデックス範囲やReDimの扱いには注意が必要です。
安全で効率的に使うために、範囲確認や初期化のタイミングに気を配って書いてみてください!
5. まとめ|配列を使えばVBAはもっと便利になる!
◼︎配列の基本をもう一度おさらい
要素 | 内容 |
基本の定義 | 複数のデータを1つの変数でまとめて扱うしくみ |
主な利点 | コードの簡潔化、繰り返し処理の効率化 |
代表的な種類 | 一次元配列、多次元配列(表形式) |
配列は「たくさんのデータに同じ処理をしたい」ときにとても便利な仕組みです。
◼︎よくある落とし穴とその対策
注意点 | 対策 |
配列の範囲外アクセス | UBound・LBoundを使う |
ReDimで中身が消える | Preserveをつける |
サイズ変更のたび処理が遅くなる | できるだけ1回でサイズ確保 |
配列は便利ですが、「エラーが出た…」「値が消えた…」といったトラブルもつきものです。
そうした事態を防ぐために、VBA特有のルールや仕様をおさえることが重要です。
改めて上記の表の内容を押さえておきましょう!
VBAの配列は、最初のとっかかりさえ乗り越えれば非常に強力な武器になります。
「なんとなく難しそう」と感じていた方も、今回の記事を通じて「配列使えそう、便利そう!」と思っていただけたら嬉しいです。
ぜひ、実務や学習のなかで配列を使ってみてくださいね!
\ Excelマクロ制作も承っています /
各種クラウドソーシングサイトにて業務効率化ツールの作成・カスタマイズを承っております。
ご相談・お見積もりは無料ですので、まずはお気軽にご覧ください!