【14】VBAの制御構文「Do Until~Loopステートメント」について

記事で紹介しているエクセル
・エクセル2019 [64ビット版]

目次

制御構文「Do Until~Loopステートメント」について

今回の制御構文は「Do Until~Loopステートメント」です。

これは前回の「Do While~Loopステートメント」を理解していれば、非常に単純です。

ループ処理における条件式の一致・不一致が逆になるだけです。

以下のサンプルコードを見てみましょう。

Sub test13()
    
    Dim i As Integer
    
    i = 1
    
    Do Until i = 3
        MsgBox "<Do Until>繰り返し処理:" & i & "回目"
        i = i + 1
    Loop
    
End Sub

「Do Until~Loopステートメント」の基本構文は以下の通りです。

    Do Until <条件式> ・・・ (条件式が一致したらループ処理を終了)
        <繰り返される実行したい処理>
    Loop

「Do While」と「Do Until」の大きな違いは以下の通りです。

Do While文Do Until文
<条件式>が不一致の時に終了<条件式>が一致の時に終了
「For文」と「Do While文」の繰り返す条件

サンプルコードを動作させると、以下の通りに実行されます。

画像1

Do Until文とDo While文は、「Do~Loopステートメント」とひと括りする事もできるので、Do While文のみ覚えていれば、特にDo Until文を使わなくても、Do While文で表現できそうです。

もっと言えば、簡単なループ処理なら、For文のみで大抵は表現できそうです。

したがって、少なくともDo While文は確実にマスターし、繰り返す条件が真逆のDo Until文があるくらいで覚えておきましょう。

<補足情報>Do Until文のいろんな書き方

UntilをLoopの後ろに書いた場合

これはWhile文の時に解説したのと全く同じです。

あわせて読みたい
【13】VBAの制御構文「Do While~Loopステートメント」について
【13】VBAの制御構文「Do While~Loopステートメント」について【制御構文「Do While~Loopステートメント」について】今回の制御構文は「Do While~Loopステートメント」です。Do While文は、For文と同じ繰り返し処理になります。実...

したがって詳しく解説はしませんが、「Until <条件式>」をLoopの後ろに書くことで、必ずDoの実行文を1度は必ず処理させます。

Sub test13a()
    
    Dim i As Integer
    
    i = 1
    
    Do Until i = 1
        MsgBox "<Do Until[1つ目]>繰り返し処理:" & i & "回目"
        i = i + 1
    Loop
    
    i = 1
    
    Do
        MsgBox "<Do Until[2つ目]>繰り返し処理:" & i & "回目"
        'i = i + 1
    Loop Until i = 1
    
End Sub

Do Until分でサイコロ目の6が出るまで振ってみる

これも全く同じなので、解説は省きます。

要するに、「Do Until文だと、このように記述される」という違いのみ紹介します。

Sub test13b()
    
    Dim i As Integer
    
    '乱数を発生させるための記述
    Randomize
    
    '変数iが「6」以外の時ループする ・・・ つまり「6」になればループ終了
    Do
        'ランダムで「1」~「6」までの整数を発生させて変数iに代入する
        i = Int(6 * Rnd(1)) + 1
        MsgBox "サイコロの目は【" & i & "】です"
    Loop Until i = 6
    
End Sub
画像2
よかったらシェアしてね!
目次
閉じる