HOME > エクセルVBA > 「For Each Nextステートメント」「Do Loopステートメント

繰り返し処理(For Each Nextステートメント)

 繰り返し処理の一つFor Each Nextは、繰り返す回数が決まっている場合、指定回数のステートメントを実行してくれます。

・毎回繰り返して処理する。

Sub test1()
Dim my_a As Long
For my_a = 1 To 5
Cells(my_a, 3).Value = Cells(my_a, 1).Value * Cells(my_a, 2).Value
Next my_a
End Sub

 上記マクロはFor Each Nextを利用したマクロです。セルA1xセルB1=セルC1の計算を5回繰り返す用に記述されています。

マクロの実行結果が下の図になります。

For Each Nextステートメント

For Each Nextステートメント

・増加値を設定し、2にして、1個飛ばしで処理する。

Sub test1()
Dim my_a As Long
For my_a = 1 To 5 Step 2
Cells(my_a, 3).Value = Cells(my_a, 1).Value * Cells(my_a, 2).Value
Next my_a
End Sub

 上記マクロでは変数のmy_aの増加値を2にしているので結果的に一個飛ばしで計算することが出来ます。結果は下図になります。

For Each Nextステートメント

・変数my_aが3になったら処理を止める。処理前で判断しているので、2回しか処理を行いません。

Sub test1()
Dim my_a As Long
For my_a = 1 To 5
If my_a = 3 Then Exit For
Cells(my_a, 3).Value = Cells(my_a, 1).Value * Cells(my_a, 2).Value
Next my_a
End Sub

▲TOPへ移動

繰り返し処理(Do Loopステートメント)

 繰り返し処理Do Loopステートメントは条件が満たされている間、繰り返される「Do While」と、条件が満たされるまで繰り返す「Do Until」を使う方法があります。どちらを利用するときでも条件が満たされている場合(条件が満たされない場合)が続くと、無限ループに陥る可能性があります。

・実行前に条件判断を行う場合
 Doの後ろにWhileと条件を記述します。

Sub test2()
Dim my_a As Long
my_a = 1
Do While my_a <= 3
Cells(my_a, 3).Value = Cells(my_a, 1).Value * Cells(my_a, 2).Value
my_a = my_a + 1
Loop
End Sub

Do Loopステートメント

・実行後に条件判断を行う場合
 Loopの後ろにWhileと条件を記述します。

Sub test2()
Dim my_a As Long
my_a = 1
Do
Cells(my_a, 3).Value = Cells(my_a, 1).Value * Cells(my_a, 2).Value
my_a = my_a + 1
Loop While my_a <= 3
End Sub

VBAの基礎  エクセル職人  条件分岐「Ifステートメント」「Select Caseステートメント」

▲TOPへ移動