分かりやすく、使いやすく。

配列のサイズを動的に変更する方法

スポンサーリンク

Excel VBA で配列のサイズを変更するには、宣言時に動的配列として宣言します。その後 ReDim を使用して、インデックスの最大値を変更することができます。 Redim を使用する際は、一緒に Preserve を使用すると、サイズ変更前の値がそのまま保持されます。

サンプルコードは次の通りです。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Option Explicit
 
Sub Test()
    '最初に配列のサイズを決めない。動的配列として宣言する。
    Dim strNames() As String
    Dim i As Integer
    
    '配列の最大インデックスを0に変更する。
    ReDim Preserve strNames(0)
    
    strNames(0) = "太郎"
 
    For i = LBound(strNames) To UBound(strNames)
        Debug.Print ("1回目のループ:" & i & "の値→" & strNames(i))
    Next i
    
    '配列の最大インデックスを5に変更する。
    ReDim Preserve strNames(5)
    
    strNames(1) = "次郎"
    strNames(2) = "三郎"
    strNames(3) = "四郎"
    strNames(4) = "五郎"
    strNames(5) = "六郎"
    
    For i = LBound(strNames) To UBound(strNames)
        Debug.Print ("2回目のループ:" & i & "の値→" & strNames(i))
    Next i
End Sub 

上記の実行結果は次の通りです。

実行結果
1
2
3
4
5
6
7
1回目のループ:0の値→太郎
2回目のループ:0の値→太郎
2回目のループ:1の値→次郎
2回目のループ:2の値→三郎
2回目のループ:3の値→四郎
2回目のループ:4の値→五郎
2回目のループ:5の値→六郎 
スポンサーリンク
スポンサーリンク