制御 実行を繰り返すフロー制御ステートメントFor~Each~Next
※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。
※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。
For Each...Next ステートメント配列やコレクションの各要素に対して、一連のステートメントを繰り返し実行するフロー制御ステートメントです。
|
For Each...Next ステートメントの使用例 |
Private Sub test1() '************************************************ 'あるコレクションの中の要素をすべて返す '************************************************ Dim Found As Boolean Dim Element As Variant Dim MyCollection As Variant Dim i As Long MyCollection = Array(10, 20, 30, 40, 50, 30) '初期化 i = 0 'MyCollectionのElementに対して繰り返します。 For Each Element In MyCollection Found = False i = i + 1 Debug.Print "i" & i & ":" & Found & ":" & Element Next 'i1:False:10 'i2:False:20 'i3:False:30 'i4:False:40 'i5:False:50 'i6:False:30 End Sub Private Sub test2() '************************************************ 'あるコレクションの中の特定要素をすべて返す '************************************************ Dim Found As Boolean Dim strFound As String Dim Element As Variant Dim MyCollection As Variant Dim i As Long, n As Long MyCollection = Array(10, 20, 30, 40, 50, 30) '初期化 strFound = "30" i = 0: n = 0 'MyCollectionのElementに対して繰り返します。 For Each Element In MyCollection Found = False i = i + 1 Debug.Print "i" & i & ":" & Found & ":" & Element 'ElementがstrFoundであれば、 If Element = strFound Then n = n + 1 'Found にTrueを設定。 Found = True 'For ループから抜け出します。 Debug.Print "n" & n & ":" & Found & ":" & Element End If Next 'i1:False:10 'i2:False:20 'i3:False:30 'n1:True:30 'i4:False:40 'i5:False:50 'i6:False:30 'n2:True:30 End Sub Private Sub test3() '************************************************ 'あるコレクションの中の特定要素があれば抜ける '************************************************ Dim Found As Boolean Dim strFound As String Dim Element As Variant Dim MyCollection As Variant Dim i As Long, n As Long MyCollection = Array(10, 20, 30, 40, 50, 30) '初期化 strFound = "30" i = 0: n = 0 'MyCollectionのElementに対して繰り返します。 For Each Element In MyCollection Found = False i = i + 1 Debug.Print "i" & i & ":" & Found & ":" & Element 'ElementがstrFoundであれば、 If Element = strFound Then n = n + 1 'Found にTrueを設定。 Found = True 'For ループから抜け出します。 Debug.Print "n" & n & ":" & Found & ":" & Element Exit For End If Next 'i1:False:10 'i2:False:20 'i3:False:30 'n1:True:30 End Sub |