関数・メソッド

最低でも1回はループ処理を行いたい【Do Loop】【ExcelVBA】

終了判定の位置に気を付ける

ループ処理を行うときに、条件に合わなくて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


 

関連記事

コメント

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