VBA 配列

同じデータ型の複数の値を一つの変数名でまとめて管理する仕組みです。たとえば、5人分の得点をそれぞれ別の変数に格納するよりも、配列を使うことで簡潔に処理できるようになります。プログラムの効率化やコードの簡素化には欠かせない機能です。


■ 配列とは何か?

配列とは、複数のデータを連続して格納するための変数です。各データ(要素)はインデックス(添え字)で区別されます。インデックスは通常 0 または 1 から始まり、順番に割り当てられます。

例(5人の得点を配列で格納):

Dim scores(1 To 5) As Integer
scores(1) = 80
scores(2) = 75
scores(3) = 90
scores(4) = 65
scores(5) = 100

■ 配列の基本的な使い方

宣言方法(固定長配列)

Dim 配列名(最小インデックス To 最大インデックス) As データ型

例:

Dim names(1 To 3) As String

これは3つの文字列要素を持つ配列 names を作ります。初期化しなくても、デフォルト値(空文字列など)が入っています。

宣言方法(インデックス省略時)

Dim scores(5) As Integer  ' インデックスは0~5(6個)

VBAでは、Option Base 1 を使用しない限り、インデックスは0から始まります。


■ 配列の種類

1. 固定長配列

サイズがあらかじめ決まっている配列。

Dim items(1 To 10) As String

2. 可変長配列(動的配列)

プログラムの途中で配列のサイズを決定・変更できる配列です。

宣言:

Dim data() As Integer

サイズを設定する:

ReDim data(1 To 5)

サイズを変更する(データ保持したまま):

ReDim Preserve data(1 To 10)

Preserve を付けないと、既存のデータはすべて失われます。Preserve最終インデックスだけ変更可能で、途中のインデックスは変更できません。


■ 多次元配列

複数の次元を持つ配列。表やマトリクス(行列)などに適しています。

例:2次元配列

Dim table(1 To 3, 1 To 2) As String

table(1, 1) = "田中"
table(1, 2) = "営業部"
table(2, 1) = "佐藤"
table(2, 2) = "経理部"
table(3, 1) = "鈴木"
table(3, 2) = "開発部"

■ 配列のループ処理

配列の中身を処理するにはループ(For文など)を使います。

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

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

■ 配列の上限・下限を調べる

LBound(ローバウンド)と UBound(アッパーバウンド)関数を使うことで、配列の範囲を取得できます。

Dim arr(2 To 6) As String

MsgBox LBound(arr) ' 2
MsgBox UBound(arr) ' 6

■ 配列を使った応用例

合計・平均を求める例:

Sub ScoreAverage()
Dim scores(1 To 5) As Integer
Dim i As Integer, sum As Integer

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

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

MsgBox "平均点:" & sum / 5
End Sub

■ 配列とVariant型

配列は Variant 型でも扱うことができます。たとえば、セル範囲から一括でデータを取得する際に便利です。

Dim myArray As Variant
myArray = Range("A1:C5").Value

この場合、myArray は2次元配列になります(行、列の順)。


■ Split関数による文字列配列

文字列を特定の区切り文字で分割し、配列として扱うこともできます。

Dim parts() As String
parts = Split("りんご,バナナ,みかん", ",")

MsgBox parts(1) ' 結果:バナナ

■ 配列の注意点

  • 配列のインデックスミス(0と1の違い)に注意。
  • ReDim Preserve の多用はパフォーマンスに悪影響。
  • 配列を使う場合は Option Base の設定にも注意(通常は0開始)。

■ まとめ

VBAの配列は、大量の同種データを一括管理し、効率的な処理を実現するための必須ツールです。

  • 固定長/可変長配列を使い分ける
  • 配列はインデックスで操作
  • ループや関数(UBoundなど)と組み合わせて使う
  • 多次元配列や文字列の分割にも対応
タイトルとURLをコピーしました