本ページには広告が含まれています。

Excel VBA While Wendについて(初心者向け18)

VBA While Wend ループ処理について(初心者向け18)

今回は、ループ(繰り返し)処理「While…Wendステートメント」についてです。

今回もよろしくお願いしますm(_ _)m

順番からすると今回は繰り返し処理の第4弾ですね。
今回もしっかり勉強しま~す(^^)

くるみこ
くるみこ

そのとおり! While…Wendステートメントですね(^^)

Do…Loopと比較してみましょう!

前回のおさらいはこちらの記事です(^^)/ 下のカードをクリックすれば開きます

くるみこ
くるみこ

前回記事でわかったことは

・Do…Loop の使い方がわかりました
Do While…Loop と Do Until…Loop の違いがわかりました
・ネストする方法やループを抜ける Exit Do の使い方がわかりました

【この記事でわかること
・ループ(繰り返し)処理「While…Wendステートメント」の使い方がわかります

Do…Loop との違いがわかります

この記事のサンプルはこのリンク先からダウンロードできます

スポンサーリンク

While…Wend ステートメント

特定の条件が True である限り一連のステートメントを実行します

While…Wend ステートメントの構文

【構文】
While condition [ statements ] Wend

While…Wend ステートメント構文の指定項目は次のとおりです

パーツ説明
condition必須。 True または False に評価される数値式または文字列式です 
condition が Null の場合は、condition が False として処理されます
statements省略可能。 条件が True の間に実行される 1 つ以上のステートメントです

・conditionには、ループを継続する判定式を指定します
・statementsには、ループ中に実行するステートメントを指定します

構文の解説

・condition が True の場合は、Wendステートメントにたどり着くまで、すべての statements が実行されます
・その後、制御は Whileステートメントに戻り、condition が再びチェックされます
・condition が True のままの場合は、処理が繰り返されます
・True ではない場合、プログラムの実行は Wendステートメントの次のステートメントに制御を移します
While…Wend ループは、どのレベルまででも入れ子(ネスト)にできます。それぞれの Wend は直前の While に対応します

While…Wend でループを抜ける方法

Do…Loop では Exit Do を使えばループ途中で抜けることが出来ます
For…Next For Each…Next では Exit For でループを抜けることが出来ます
・対して、While…Wend の場合は、Exit でループを抜けることはできません

・どうしても抜けたい場合は、GoTo ステートメントを使ってループ外(Wend の直後など)へジャンプさせて制御を強制的に移します

While…Wend 使用例

次の使用例は、GoToでループを抜ける処理を使っています

Sub WhileWend_Sample()
    Dim Counter As Long
    Dim Check As Boolean
    
    Counter = 0: Check = True   '変数を初期化
    
    While Counter < 50          '50未満の間ループする
        
        Counter = Counter + 1   'カウンター数値をカウントアップ
        
        If Counter Mod 10 = 0 Then 'カウント数10毎に検査
            
            'カウント数と継続するかどうかメッセージを出す
            Check = (MsgBox(Counter & "です継続しますか?", vbYesNo) = vbYes)
            
            'Noが選択されたら「ExitWhile」へジャンプする
            If Not Check Then GoTo ExitWhile
        
        End If
    
    Wend 'カウンターが49を超えたらループ終了

ExitWhile:
    
    MsgBox Counter              'カウント数をメッセージする

End Sub

While…Wend ステートメントは、変数 Counter が 50 未満の間ループします
・変数 Counter をチェックして10で割り切れる毎に継続するかどうかをたずねます
・No が選択されると、GoTo ステートメントで「ExitWhile」の行にジャンプします
・最後にカウント数を表示して終了します

Do…Loop との違い

While…Wendステートメントと、Do…Loopステートメントは条件によって処理を繰り返すということにおいて、良く似た処理をします。根本的に違うのは、Do…Loopステートメントでの Exit Doステートメントにあたる処理の途中でループから抜け出す手法がWhile Wendステートメントには用意されていないことです

したがって、Do…Loopステートメントのほうが柔軟な処理が可能で、処理そのものについてもDo…Loopステートメントで代用が出来るので、While…Wendステートメントは必須ではないように思えます

While…Wendステートメントがあるのは、過去からの互換性の確保のためのようなので、将来的には利用できなくなる可能性があるのかもしれません

だから、While…Wendステートメントの使用は避けてDo…Loopステートメントを使うようにしたほうががよさそうです

まとめ(おわりに)

くるみこ
くるみこ

はい! 今回はここで終了です!
While…Wendステートメントは理解できましたか?

はい! While…Wendはわかりましたが、Do…Loopを使った方がいいことが理解できました。(^^ゞ

くるみこ
くるみこ

はい! それでいいと思います!
While…Wendを使う理由は特別にありませんので、Do…Loopを使うようにした方が良いと思います!
次回からは、分岐処理の解説に移ります。楽しみに待っていてね(^^)/

まとめと感想など

While…Wend の使い方がわかりました
While…Wend Do…Loop の違いがわかりました
While…Wend より Do…Loop を使った方が良いことがわかりました

マクロ(VBA)を実行する際は必ずバックアップを取ってから行ってください
・マクロ(VBA)は実行後にファイルを保存すると元に戻すことはできません!
・実行後にファイルを保存せず終了すれば、実行前に戻すことができます!

★★★ ランキング参加中! クリックしてね(^^)/ ★★★

今後の記事について

今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
当面は「初心者向けマクロVBA」の記事を継続して書いていきます

【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう現在検討中です
・その他雑記的に「小ネタなどいろいろ」・・・・・
・今後の記事にもご期待ください(^^)/

スポンサーリンク
スポンサーリンク

過去記事のサンプルファイルをダウンロードできます

この記事のサンプルはこのリンク先からダウンロードできます

過去の記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください