vba 配列のループ処理 / 配列の各項目の処理

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 3月 16, 2022

このチュートリアルでは、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

上記のプロシージャは、配列内のすべての名前をループで処理します。

vba array loop 2

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番目の位置をループしています。 イミディエイトウィンドウでは、次のように名前が返されます。

vba array loop 1

配列全体をループする

次に、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
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples