Excel VBAでの開発において、配列はデータを効率よく扱うために欠かせない存在です。複数のデータをまとめて処理したいとき、同じ種類の変数を繰り返し使うときなど、配列を使うことでコードがシンプルになり、処理速度も向上します。しかし、初めて配列に触れると、宣言方法やループ処理、動的配列など、ややこしいポイントが多く、つまずきやすいものです。
この記事では、VBA初心者でも理解できるように、配列の基本的な使い方から応用例までを丁寧に解説します。
配列とは何か?VBAで使う理由
配列とは、同じ型の複数のデータを1つの変数名でまとめて扱う仕組みです。たとえば、10人分の点数を格納したいとき、score1
, score2
, score3
…と個別に変数を作る代わりに、score(1)
, score(2)
…とひとつの配列で管理することができます。
VBAで配列を使うメリットは以下の通りです。
- 変数の管理が楽になる
- 同じ処理を繰り返すループとの相性が良い
- 可読性が高く、保守がしやすい
- 処理速度が速くなる(特に大きなデータ処理時)
配列の宣言方法
静的配列の宣言
配列のサイズが固定されている場合は、以下のように静的配列を使います。
Dim scores(1 To 5) As Integer
この場合、scores(1)
から scores(5)
まで、5つの整数型の要素が格納できる配列が用意されます。
注意点:
配列のインデックスは、0
から始まるのがデフォルトです。上記のように 1 To 5
と範囲を指定しない場合、0
から始まることを意識しましょう。
Dim names(2) As String ' names(0), names(1), names(2) の3つ
配列の値の代入と取得
Dim fruits(1 To 3) As String
fruits(1) = "りんご"
fruits(2) = "バナナ"
fruits(3) = "みかん"
MsgBox fruits(2) ' バナナと表示される
ループで配列を操作する
配列はForループとセットで使われることが多いです。
Dim i As Integer
Dim nums(1 To 5) As Integer
For i = 1 To 5
nums(i) = i * 10
Next i
For i = 1 To 5
Debug.Print nums(i)
Next i
このようにすれば、配列に一括で値を代入し、また一括で出力できます。
動的配列の使い方
配列のサイズが事前にわからないときは、「動的配列」を使います。
Dim items() As String
ReDim items(1 To 3)
items(1) = "A"
items(2) = "B"
items(3) = "C"
途中でサイズを変更することもできます。
ReDim Preserve items(1 To 5) ' Preserveで既存のデータを保持
items(4) = "D"
items(5) = "E"
配列の長さを調べる方法
配列のサイズを確認したいときには、UBound
(最大インデックス)とLBound
(最小インデックス)を使います。
Dim a(3 To 7) As Integer
MsgBox LBound(a) ' 3
MsgBox UBound(a) ' 7
これを使えば、配列のすべての要素にループでアクセスできます。
Dim i As Integer
For i = LBound(a) To UBound(a)
a(i) = i * 2
Next i
二次元配列の使い方
表形式のデータを扱うときには、二次元配列が便利です。
Dim matrix(1 To 3, 1 To 2) As String
matrix(1, 1) = "山田"
matrix(1, 2) = "営業"
matrix(2, 1) = "佐藤"
matrix(2, 2) = "総務"
matrix(3, 1) = "鈴木"
matrix(3, 2) = "経理"
ループを組み合わせると一括操作も簡単になります。
Dim i As Integer, j As Integer
For i = 1 To 3
For j = 1 To 2
Debug.Print matrix(i, j)
Next j
Next i
Split関数で配列を生成する
文字列を区切って配列にする方法もあります。
Dim fruits As Variant
fruits = Split("りんご,バナナ,みかん", ",")
Debug.Print fruits(0) ' りんご
この方法は、CSVデータや区切り文字がある文字列を処理するときに非常に有効です。
配列とVariant型の使いどころ
VBAでは、Variant型の変数に配列を代入することもできます。とくに関数の戻り値で配列を返すときなどに便利です。
Function GetColors() As Variant
Dim arr(1 To 3) As String
arr(1) = "赤"
arr(2) = "青"
arr(3) = "緑"
GetColors = arr
End Function
Sub Test()
Dim colors As Variant
Dim i As Integer
colors = GetColors()
For i = LBound(colors) To UBound(colors)
Debug.Print colors(i)
Next i
End Sub
まとめ:配列を使いこなすとVBAがもっと楽になる
配列は、VBAを効率よく書くための強力なツールです。最初は「静的配列」で練習し、慣れてきたら「動的配列」や「二次元配列」へとステップアップしましょう。
また、配列とループ処理を組み合わせることで、繰り返し処理がグッと簡単になります。
VBAの配列に慣れてくれば、Excelの自動化スキルが一気にレベルアップします。ぜひこの記事を参考に、配列をマスターしてみてください!