【Excel VBA】配列(使い方・2次元)

最終更新日:

配列とは

変数の一つで、同じデータ型を複数格納できるものです。
これにより1つの変数名で多くの値を格納できます。

配列の各領域を「要素」と呼び、
各要素については、変数名の末尾に(インデックス番号)を付与して表現します。

インデックス番号

要素を特定するための番号で、標準では0から順番に割り当てられます。
Dim str(2) As Stringであれば、str(0)、str(1)、str(2)の3つが用意されています。

配列の宣言

下記の例のように宣言し、代入を行います。

Dim str(2) As String
str(0) = "値1"
str(1) = "値2"
str(2) = "値3"

Array関数

Array関数を使うと記述をすっきりさせることができますが、
Variant型で宣言しないと使用できません。

Dim str As Variant
str = Array("値1", "値2", "値3")

Split関数

既にある文字列を分割して配列に格納したい場合に便利な関数です。
これも宣言はVariant型で。

Dim str As Variant
str = Split("値1,値2,値3", ",")

多次元配列

配列の要素がさらに配列になっているものです。
二次元配列であればstr(2,3)、三次元配列であればstr(2,1,2)のように
インデックス番号が増えていきます。

Dim str(2,1) As String
str(0,0) = "値1"
str(0,1) = "値2"
str(1,0) = "値3"
str(1,1) = "値4"
str(2,0) = "値5"
str(2,1) = "値6"

動的配列

宣言時に要素数を決めず、プログラム実行時に要素数を動的に変更させる配列です。
宣言時は要素数を未入力で宣言し、Redimの際に次元数と要素数を決定することができます。
なお、ReDimは宣言時のデータ型を変更することはできない。
また、ReDimを行うとそれまでに格納されていた値は消えます。

Dim l() As long
ReDim l(2)
l(0) = 1
l(1) = 2
l(2) = 3

ReDimにPreserveを付けると、値を保持したまま要素数を変更できますが、
一番最後の次元の要素数しか変更できないので注意。

Dim l() As long
ReDim l(2)
l(0) = 1
l(1) = 2
l(2) = 3
ReDim Preserve l(3)