終了判定の位置に気を付ける
ループ処理を行うときに、条件に合わなくて1回も処理されず困った経験はありませんか?
例えば「在庫チェックを最低でも1回は実施したい」「空欄でも一回は確認処理をしたい」
このような場面で Do Loop構文 を用いて実行したのに、一度も処理されずに終わってしまう…
これはループの終了判定を、処理の後に置くこと(後判定)で防ぐことができます。
前判定
ループの終了判定が処理の式より前にあり、継続条件が False なら処理を一度も実行しません。
後判定
WhileをLoopの後ろに置くことで、必ず一度はループ処理を実行します。
前判定と後判定の比較
'■前判定(何も表示されない)
Public Sub Sample_DoWhileLoop()
Dim i As Long
i = 7 '変数を代入する
Do While i < 7 '変数が7未満の間ループ処理を行う
Debug.Print "こんにちは" '「こんにちは」と表示する
i = i + 1
Loop 'ループ処理はここまで
End Sub
'■後判定(一度は「こんにちは」と表示される)
Public Sub Sample_DoLoopWhile()
Dim i As Long
i = 7
Do
Debug.Print "こんにちは"
i = i + 1
Loop While i < 7 '「こんにちは」と表示してからループを行う
End Sub



コメント