Excel VBAで配列の宣言、使用する方法をご紹介
- Excel VBAで複数の値を一度に扱いたい方
- Excel VBAで配列を使用したい方
- VBA初心者の方
配列変数の宣言方法【2次元配列, 動的配列も紹介】
配列変数の宣言方法は下記の通りです。
Dim 変数名(上限値) As データ型名
※上限値は要素数 – 1を指定します(要素数が4の場合は上限値を3に指定する)
上記のような1次元方向にN個の要素を持つ配列を
1次元配列
といいます。
配列には上記の1次元配列の他に下記のような宣言方法があります。
<2次元配列>
2次元方向にN × Nの要素数を持つ配列
<動的配列>
要素数を指定せずに宣言する配列
2次元配列、動的配列の宣言方法は下記の通りです。
<2次元配列の宣言方法>
Dim 変数名(上限値1, 上限値2) As データ型名
<動的配列の宣言方法>
Dim 変数名() As データ型名
配列変数への代入方法
配列変数への代入方法は下記の通りです。
<1次元配列への代入>
変数名(インデックス番号) = 格納する値
<2次元配列への代入>
変数名(行のインデックス番号, 列のインデックス番号) = 格納する値
動的配列に代入を行う際には、要素数を再定義する必要があります。
再定義の方法は下記の通りです。
<要素数の再定義方法>
ReDim 変数名(上限値)
<先に代入されている値を保持して再定義する方法>
ReDim Preserve 変数名(上限値)
使用例1 : 配列を用いたセルの参照と代入
配列を用いたソースコードの例は下記の通りです。
<サンプルコード>
Sub sample()
'1次元配列を定義
Dim values_1(3) As String
'動的配列を定義
Dim values_2() As Long
'動的配列の要素数を定義
Dim num As Long
num = 5
'ループ用の変数
Dim i As Long
'動的配列を再定義
ReDim values_2(num)
'インデックスを指定して配列に値を代入
values_1(0) = "a"
values_1(1) = "b"
values_1(2) = "c"
'ループを利用して配列を代入
For i = 0 To num - 1
values_2(i) = i
Next i
'配列の中身をセルに出力
Range("B2:D2").Value = values_1
Range("B3:F3").Value = values_2
End Sub
<マクロ実行結果>

使用例2 : 2次元配列を用いたセルの参照と代入
2次元配列を用いたソースコードの例は下記の通りです。
<サンプルコード>
Sub sample()
'2次元配列を定義
Dim values_1(2, 3) As String
'動的配列を定義
Dim values_2() As Long
'動的配列の要素数を定義
Dim num As Long
num = 5
'ループ用の変数
Dim i As Long
Dim j As Long
'動的配列を再定義
ReDim values_2(num, num)
'インデックスを指定して配列に値を代入
values_1(0, 0) = "a"
values_1(0, 1) = "b"
values_1(0, 2) = "c"
values_1(1, 0) = "A"
values_1(1, 1) = "B"
values_1(1, 2) = "C"
'ループを利用して配列を代入
For i = 0 To num - 1
For j = 0 To num - 1
values_2(i, j) = i + j
Next j
Next i
'配列の中身をセルに出力
Range("B2:D3").Value = values_1
Range("E2:I6").Value = values_2
End Sub
<マクロ実行結果>

以上が配列の宣言、使用方法となります。
ここまでご覧いただきありがとうございました。
初心者におすすめの書籍はこちら
VBAに詳しくなりたい方におすすめの書籍はこちら