今回は、ループ(繰り返し)処理「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を使うようにした方が良いと思います!
次回からは、分岐処理の解説に移ります。楽しみに待っていてね(^^)/
まとめと感想など
・マクロ(VBA)を実行する際は必ずバックアップを取ってから行ってください!
・マクロ(VBA)は実行後にファイルを保存すると元に戻すことはできません!
・実行後にファイルを保存せず終了すれば、実行前に戻すことができます!
★★★ ランキング参加中! クリックしてね(^^)/ ★★★
今後の記事について
今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
当面は「初心者向けマクロVBA」の記事を継続して書いていきます
【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう現在検討中です
・その他雑記的に「小ネタなどいろいろ」・・・・・
・今後の記事にもご期待ください(^^)/
過去記事のサンプルファイルをダウンロードできます
この記事のサンプルはこのリンク先からダウンロードできます!
過去の記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください
・While…Wend の使い方がわかりました
・While…Wend と Do…Loop の違いがわかりました
・While…Wend より Do…Loop を使った方が良いことがわかりました