VBA を使用して配列で for Each を使用する
VBA には 2 種類の For
ループがあります。
For Each
ループFor To Next
ループ
この記事では、配列での For Each
ループの使用について説明します。 この記事では、For To Next
ループに関連する例も提供されています。
VBA を使用して配列で For Each
を使用する
例 1:
配列に対して For Each
ループを反復するには、次の構文を使用できます。
Public Sub sampleProgram()
Dim arr(7) As String
Dim element As Variant
For Each element In arr
func1 element
Next element
End Sub
Sub func1(ByVal ele As String)
End Sub
コードは圧倒されるかもしれません。 ただし、各ステートメントを正確に理解できるように、以下で説明しています。
配列に対して For Each
ループを使用して反復するには、最初に配列を宣言することが不可欠です。 任意のデータ型の配列を宣言できます。 この例では、配列 arr
は 7つの要素を持つ文字列として宣言されています。
配列が For Each
の反復子として機能するために、変数 element
は Variant
型として宣言されます。 element
変数は、配列 arr
から値を取得し、配列を反復処理する反復子として使用されます。
ループ内では、サブルーチン func1()
が使用されます。このサブルーチンは、配列 arr
の反復要素をパラメーターとして受け取ります。 element
は、For Each
ループの反復子として機能するため、Variant
データ型です。
element
がパラメーターとして func1()
に渡される場合、func1()
が Variant
型パラメーターを受け入れることを確認する必要があります。 このために、次の 2つのことを行うことができます。
- 上記の例で定義されているように、パラメーターを値で受け取るサブルーチンを作成します
ByVal ele As String
. - それ以外の場合は、サブルーチンに渡す前に
Variant
を String データ型に変換します。element
を String データ型に変換するためのコード スニペットを次に示します。
func1 CStr(element)
コード例の func1()
は、各配列値に対する For Each
ループで呼び出されるサブルーチンです。 ダミーとして、このサブルーチンはユーザーに対して空に保たれています。
実行する必要がある作業を取り込むことができます。 それ以外の場合は、For Each
ループでサブルーチン呼び出しを省略することもできます。
例 2:
2 番目の例では、上記で説明した For Each
ループの代替として、For To Next
ループについて説明します。
For Each
ループは、オブジェクトのコレクションを中心に構成されています。 最初の例で説明したように、Variant
データ型変数またはオブジェクトがループの反復子として使用されます。
さらに、関数を使用する場合は、Variant
型のパラメーターを受け入れる必要があります。
For To Next
ループの動作は異なります。; 配列の上限と下限を利用します。 さらに、Integer
型の変数を使用してループを繰り返します。これは、配列のすべての要素にアクセスするためにも使用できます。
コード スニペットを次に示します。
Public Sub sampleProgram()
Dim arr(7) As String
Dim i As Long
For i = LBound(arr) To UBound(arr)
func1 arr(i)
Next i
End Sub
配列は sampleProgram()
でデータ型 String
の arr
として宣言されています。 反復子 i
はデータ型 Long
で宣言され、配列を反復処理します。
前に説明したように、配列の下限と上限は特定の関数を使用して計算されます。 For To Next
ループは、定義された回数反復し、各反復でサブルーチン func1()
を呼び出します。
特定の配列要素 arr(i)
の値は、パラメーターとして func1()
に渡されます。 したがって、Variant
データ型に問題はありません。
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub