決められた処理を繰り返し実行する処理を「繰り返し処理」と呼び、決められた回数あるいは、ある条件を満たすまでの間は、何度でも正確に処理を繰り返します。
繰り返し処理は「ループ処理」とも呼びます。
For…Nextステートメント
繰り返し処理で、決められた回数だけ処理を繰り返したいとき、For…Nextステートメントを使用します。For…Nextステートメントは、カウンタ変数と呼ばれる、繰り返した回数を格納する変数を用います。
For カウンタ変数 = 初期値 To 最終値 (Step 加算値)
繰り返し実行する処理
Next カウンタ変数
※「Step 加算値」の指定は省略可
Sub test()
Dim i As Long
For i = 1 To 3
MsgBox i & "回目の繰り返し処理です"
Next i
End Sub
Stepキーワードを省略すると、加算値は自動的に「1」が設定されます。
Sub test()
Dim i As Long
For i = 1 To 3 Step 1
MsgBox i & "回目の繰り返し処理です"
Next i
End Sub
◎繰り返し処理をネストする
For…Nextステートメントは、Ifステートメントと同様に、ネスト構造(入れ子構造)にすることができます。
Sub test()
Dim i As Long
Dim j As Long
For i = 1 To 2
For j = 1 To 2
MsgBox i & "-" & j & "回目の繰り返し処理です"
Next j
Next i
End Sub
カウンタ変数の名前は、必ず「i」や「j」にする必要はなく、他の変数同様に自由に付けることができます。
DO…Loopステートメント
ある条件を満たしている間や、ある条件を満たすまで繰り返し条件を実行させたいとき、Do…Loopステートメントを使用します。
Do…Loopステートメントは、「ある条件を満たしている間」は処理を繰り返すWhileキーワード、または「ある条件を満たすまで」処理を繰り返すUntilキーワード、と一緒に使用します。
Do (While または Until) 条件式
繰り返し実行する処理
Loop
または
Do
繰り返し実行する処理
Loop (While または Until) 条件式
Sub test()
Dim mynumber As Long
Dim joken As Long
joken = 10
Do While joken > 0
mynumber = InputBox("数値を入力して下さい")
joken = joken - mynumber
Loop
MsgBox "繰り返し処理が実行しました"
End Sub
再びダイアログボックスが表示されるので、さらに「5」を入力します。
◎WhileキーワードとUntilキーワード
Do…Loopの条件式に対して、条件を満たしている間は繰り返し処理を実行するのがWhileキーワードです。逆に条件を満たしていない間は(満たすまで)は繰り返し処理を実行するのがUntilキーワードになります。
◎実行前判断、実行後判断
実行前判断ではステートメントの最初に条件を判断するため、はじめから条件を満たしていなければ、一度もDo…Loopステートメントの処理は実行されません。
実行後判断ではステートメントの最後に条件を判断するため、たとえ条件を満たしていなくても必ず一度はDo…Loopステートメント内の処理が実行されます。
Sub test() Dim mynumber As Long Dim joken As Long joken = InputBox(“条件になる数値を入力して下さい”) Do While joken > 0 mynumber = InputBox(“数値を入力して下さい”) joken = joken – mynumber Loop MsgBox “繰り返し処理が実行しました” End Subこれが、実行前判断の動作です。
Sub test()
Dim mynumber As Long
Dim joken As Long
joken = InputBox("条件になる数値を入力して下さい")
Do
mynumber = InputBox("数値を入力して下さい")
joken = joken - mynumber
Loop While joken > 0
MsgBox "繰り返し処理が実行しました"
End Sub
これが実行後判断です。「数値を入力して下さい」のダイアログボックスに「0」以上の数値を入力し、コードの実行を終了させてください。
For Each…Nextステートメント
For Each…Nextステートメントは、「配列」や、同じオブジェクトの集合である「コレクション」の、各要素に対して同じ処理を繰り返すときに使用します。
要素変数に各要素が順番に格納されて、要素の数だけ繰り返し処理を実行します。
For Each 要素変数 In 配列またはコレクション
繰り返し実行する処理
Next 要素数
Sub test()
Dim mynumber(4) As Long
Dim myvalue As Variant
Dim i As Long
For i = 0 To 4
mynumber(i) = i
Next i
For Each myvalue In mynumber
MsgBox "配列の要素" & myvalue
Next myvalue
End Sub
配列の要素数は5つなので、繰り返し処理も5回実行されます。
コメント