もくじ

taka



最新記事 by taka (全て見る)
- 『雑記』最近の私の話~ - 2019年9月26日
- 【動画】自作パソコン構成変更!ケースをNZXT H500に交換しました! - 2019年6月5日
- VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日
- 「動画」初完全ワイヤレスイヤホン『Jabra Elite Active 65t』 - 2019年5月17日
- VBA 日付で令和を簡単に判定してみよう - 2019年5月7日
どうも、takaです
今回は【Do~Loop】についてです(^.^)
【Do~Loop】は前回の【For~Next】とは違い、条件を指定しその条件にそって繰り返すステートメントです(^.^)
【Do~Loop】は【For~Next】と比べて使用頻度は減って、知らない方も結構多いのではないでしょうか?(*_*;
私もVBAを始めてすぐのころはDo~Loopを使ったことはありませんでした(~_~;)
それまでFor~Nextで全てまかなえてしまっていた為です(笑)ですがVBAを続けていく中でいつかFor~Nextだけでは対処しきれないところが必ず出てきてしまいます(*_*;
なのでここで完璧マスターしてしまいましょう(笑)
【For~Nextの記事はこちら】
Do~Loopの使い方
Do~Loopは繰り返し処理の【前】と【後】での条件判定ができ、繰り返し【前】での条件判定の場合、条件に合わなければ一度も処理はされず、【後】の場合は条件にかかわらず一度は処理が行われてから判定に移るようになります。
繰り返し前で条件判定
Do 条件 ~処理~ Loop
繰り返し後で条件判定
Do ~処理~ Loop 条件
Do~Loopの条件づけWhileとUntil
Do~Loopでは二つの条件指定方法がありますそれがWhileとUntilです。
While | 条件が正しい間繰り返す |
Until | 条件が正しくない間繰り返す |
WhileとUntilはそれぞれ条件式がtrueの間は処理が実行されつづけます。なので、処理の中で条件式がfalseになるようにしたり、 繰り返しを中断するようなコードを記述しておきましょう(ー_ー)!!
中断できるようにしておかないとDo~Loopは処理を永遠に繰り返し処理を続けてしまいます。(無限ループに陥った場合はキーボード左上にある「Escキー」を押せば処理を中断できます。)
Do~Loopの条件がWhileの場合の書式
まずは条件が正しい間繰り返すWhileの書式から見ていきましょう(^^)
Whileの書式1
「iが10以上になるまで処理を続ける」
Sub test() i = 1 Do While i < 10 i = i + 1 Loop MsgBox "変数iは" & i ’結果10 End Sub
Whileの書式2
「書式1と同じ条件だが条件式が後ろにあるため【i = i + 1】が実行してiが11になった時点でループを抜ける」
Sub test() i = 10 Do i = i + 1 Loop While i < 10 MsgBox "変数iは" & i ’結果11 End Sub While(1)
Do~Loopの条件がUntilの場合
続いて条件が正しくない間繰り返すUntilの書式から見ていきましょう(^^)
Untilの書式1
「iが10以外の場合は処理を続ける」
Sub test() i = 1 Do Until i < 10 '処理されない i = i + 1 Loop MsgBox i ’結果1 End Sub
Untilの書式1
「書式1と同じ条件だが条件式が後ろにあるため【i = i + 1】が実行してからループを抜ける」
Sub test() i = 1 Do ’処理される i = i + 1 Loop Until i < 10 MsgBox i ’結果2 End Sub
注意点
以上Do~Loop 4つの書式でした(^.^)
上記のコードで【i = i + 1】の記述がなかった場合は永遠に処理を続けてしまうコードになってしまいます(~_~;)
Do~Loopを使う場合は、一定の条件式を書いてもその条件が満たされない場合処理し続けてしまうので必ずループを抜け出せるようにしておかなければいけません。
さらには条件式がDo(前)にあるのか Loop(後)にあるのかで結果が違ってきますので使うときには気をつけて使用しましょう(ー_ー)!!
最後に
なるべくわかりやすいように書いたつもりですが、今回の記事のサンプルコードや説明が若干分かりづらいかもしれません、自分で書いていて伝わるのかが心配になりました(T_T)
フォロー・チャンネル登録お願いします
VBA以外についてのブログはこちら↓
https://yb-log.com/■Twitterフォロー
Follow @taka_pc1027■YouTubeチャンネル登録
コメントを残す