【VBA】VBAで繰り返し処理してみた(Do文)
Do文の繰り返し処理
こんにちは!
前回のIfに続いて、今回はDoを使った繰り返し処理について紹介します。
今回は少し難しいけど、使用頻度少な目なので、、
(* ̄- ̄)ふ~ん
って感じで見てください。
その前に、Forって何?って人は↓
VBAで繰り返し処理してみた(For文)VBAで繰り返し処理してみた(For文)
Do文の繰り返し条件
繰り返し条件には2通りの記述の仕方があります。
①While ~(条件を満たす間繰り返します)
②Until ~(条件を満たすまで繰り返します)
それから、その条件をDoに設定するかLoopに設定するかで、
大きく分けて4通りのDo文ができます。
要するに、、、
・Do while 条件 ~ Loop
・Do Until 条件 ~ Loop
・Do~ Loop while 条件
・Do~ Loop Until 条件
まあ、こんな感じの4通りにできますよ。ってこと。
わからなくて大丈夫です。サクッと次に行きましょう♪
図を使って解説
ここでは、流れ的なことと、4通りある内の2通りを図を使って解説します。
WhileとUntilの違いについて理解してくださいね。
2つともDoに条件式を書いて説明します。
まあ、『どこで繰り返しを抜けるのか。』ってことと、
『じゃあ、どんな条件で抜けるのか。』これを理解するのが目的です😊
・とりあえずDo文の流れ
・Do While~について
・Do Until~について
なーんか、モヤモヤした感じでしょうか?
まだ、後半あるので力まずに行きましょう🙋
Forを含めた使い分け
ここも、ザックリと使い分けの説明しますねぇ😝
まず、どんなときにForを使うか。。。
・繰り返し処理の回数が明確なとき!
例えば、前回紹介した九九。『1~9』の繰り返ししか使いません。九九なので、10とか使わないよねぇ。
あと、一週間の合計出したいとか。一週間は『1~7』。
次に、じゃあ、Doはどんなときか。。。
・繰り返し処理の回数を決めたくない時!
例えば、待機処理やゲームとか。
ユーザーがゲームをクリアするのに何回挑戦するか。なーんて、メーカーは分からないよねぇ。
恋人が、いつトイレから出て来るかなんて分からないよねぇ。←変?
ちなみに、Loopに条件を書けば、少なくとも1回はDo~Loop内の処理が実行されます。
Doに条件を設定するかLoopに条件を設定するかの違いは、、ソレくらいかな?
そんな感じで、Doは中級者とか上級者向けかと思います💦
コードを記述して動作確認
今回は4通りもあるので大変。
Sub do1() Dim i As Long Do While i < 10 i = i + 1 DoEvents Loop Debug.Print "ループが抜けた時の数値は" & i End Sub Sub do2() Dim i As Long Do Until i < 10 i = i + 1 DoEvents Loop Debug.Print "ループが抜けた時の数値は" & i End Sub Sub do3() Dim i As Long Do i = i + 1 DoEvents Loop While i < 10 Debug.Print "ループが抜けた時の数値は" & i End Sub Sub do4() Dim i As Long Do i = i + 1 DoEvents Loop Until i < 10 Debug.Print "ループが抜けた時の数値は" & i End Sub
do1 ⇒ ループが抜けた時の数値は10
do2 ⇒ ループが抜けた時の数値は0
do3 ⇒ ループが抜けた時の数値は10
do4 ⇒ ループが抜けた時の数値は1
如何でしょうか?
重要なのは何処で抜けたか、どんな条件で抜けたか。
F8で確認してみてください。今回は、その確認くらいでいいです👌
まあまあの数のマクロ組んでるけど、Do文はあまり使わないです。
事務処理のマクロなんて、事務的なこと(決まり切った事)なので当たり前かもしれないですね😅
無限ループについて
最後に無限ループについてです。
初心者がDoを使うと、条件を間違えて設定してしまい、ループを抜けなくなることが多々あると思います😫
DoよりForを優先して使用しましょう。
あと、どうしてもDoを使うときは、『DoEvents』を処理に入れましょう。
これで、パソコンがカッチカチに固まるのを防げます😝
(EscキーやBreakキーで中断可能になります)
んなわけで、今回は長いけど重要なことじゃないので、、、
『ループが抜ける場所と条件・DoよりFor優先・DoEvents入れる』
この三つくらい覚えておけばいいかと思います🖖
それでは、またねぇ✋
ディスカッション
コメント一覧
まだ、コメントがありません