VBA初心者でもわかる!配列の基本と実践的な使い方ガイド

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の自動化スキルが一気にレベルアップします。ぜひこの記事を参考に、配列をマスターしてみてください!

タイトルとURLをコピーしました