事務職プログラミングAccessVBAステートメント繰り返し処理

PC
スポンサーリンク

決められた処理を繰り返し実行する処理を「繰り返し処理」と呼び、決められた回数あるいは、ある条件を満たすまでの間は、何度でも正確に処理を繰り返します。

<span class="bold-blue">Yoshi</span>
Yoshi

繰り返し処理は「ループ処理」とも呼びます。

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
<span class="bold-blue">Yoshi</span>
Yoshi

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
<span class="bold-blue">Yoshi</span>
Yoshi

カウンタ変数の名前は、必ず「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
<span class="bold-blue">Yoshi</span>
Yoshi

再びダイアログボックスが表示されるので、さらに「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
<span class="bold-blue">Yoshi</span>
Yoshi

これが、実行前判断の動作です。

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
<span class="bold-blue">Yoshi</span>
Yoshi

これが実行後判断です。「数値を入力して下さい」のダイアログボックスに「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
<span class="bold-blue">Yoshi</span>
Yoshi

配列の要素数は5つなので、繰り返し処理も5回実行されます。

コメント

タイトルとURLをコピーしました