vba 配列のループ処理 / 配列の各項目の処理
Last updated on 3月 16, 2022
In this Article
このチュートリアルでは、VBAで配列をループする方法を学びます。
VBAで配列のループ処理を行うには、主に2つの方法があります。
- For Each Loop – For Each Loopは、配列の各項目をループします。
- For Next Loop – For Next Loop は、配列の指定された開始位置と終了位置をループします(配列全体をループするためにUBound 関数と LBound 関数を使用できます)。
配列の各項目について
For Each ループを使用すると、配列の各要素をループすることができます。
Sub LoopForArrayStatic()
'文字列型の配列を宣言する
Dim strNames(1 To 4) As String
'配列に値を入れる
strNames(1) = "Bob"
strNames(2) = "Peter"
strNames(3) = "Keith"
strNames(4) = "Sam"
'配列の要素を保持するためにバリアント型を宣言する
Dim item as variant
'配列全体をループする
For Each item in strNames
'イミディエイトウィンドウに要素を表示する
Debug.Print item
Next item
End Sub
上記のプロシージャは、配列内のすべての名前をループで処理します。
For Next ループ
For Nextループは、配列の指定された開始位置と終了位置の各項目をループします。
配列の一部をループする
ループの開始位置と終了位置を手動で指定することができます。これは、配列のサイズがわかっている場合や、配列の一部分だけをループさせたい場合などに便利です。
Sub LoopForNextStatic()
'文字列型配列の宣言
Dim strNames(1 To 4) As String
'配列に値を入れる
strNames(1) = "Bob"
strNames(2) = "Peter"
strNames(3) = "Keith"
strNames(4) = "Sam"
'整数型を宣言する
Dim i As Integer
'配列の2番目の位置から3番目の位置までループする
For i = 2 To 3
'イミディエイトウィンドウに名前を表示する
Debug.Print strNames(i)
Next i
End Sub
上記の例では、配列の2番目と3番目の位置をループしています。 イミディエイトウィンドウでは、次のように名前が返されます。
配列全体をループする
次に、UBound関数とLBound関数を使って、配列全体をループする方法を説明します。これは、配列の開始と終了の位置が変わる可能性がある場合(例:動的配列)に非常に便利です。
Sub LoopForNextDynamic()
'文字列型配列を宣言する
Dim strNames() As Variant
'配列を初期化する
ReDim strNames(1 to 4)
'配列に値を入れる
strNames(1) = "Bob"
strNames(2) = "Peter"
strNames(3) = "Keith"
strNames(4) = "Sam"
'整数型を宣言する
Dim i As Integer
'配列の下限から上限まで、つまり配列全体をループします。
For i = LBound(strNames) To UBound(strNames)
'名前をイミディエイトウィンドウに表示する
Debug.Print strNames(i)
Next i
End Sub