VBA11_Do~Loopは条件式でループしよう

こんばんは! Benです。NAS消失のショックからまだ立ち直れていませんが、気分転換にVBAでもノートしたいと思います。

前回までで、For~Nextステートメントを用いた繰り返し処理の重要性は把握していただいたと思います。今回は別の繰り返し処理です。それは・・・

20151109a.PNG
Do~Loopステートメントです。これは大きく2つありますが、Do while (条件式)のときは、「条件式を満たしている間は繰り返すよ!」というもので、Do until (条件式)のときは、「条件式を満たすようになるまで繰り返す」というものです。英語の意味そのままでWhileは「~の間は」、Untilは「~まで」なので分かりやすいと思います。たとえば条件式がi=1だったら、Do while i=1 だとiが1のうちはずっと繰り返し、1以外になったらループから抜けます。逆にDo until i=1だと、i=1以外だと繰り返し続け、i=1になったら繰り返しを終えます。

20151109b.PNG
そこでこういうステートメントを作ってみました。条件はiが10以下で、処理を繰り返すごとにiは1ずつ増えていく・・・これって以前のFor~Nextステートメントと一緒では わざと同じ条件にしてみました。

20151109c.PNG
具体的な動きは御覧のとおりですな。For~Nextステートメントは、変数をあらかじめiとかに決めて、Nextのところで所定の刻み幅分を変数に加えてForまで戻すということでした。今回、条件式は10以下、LoopではNextのように刻み幅をくわえるような処理はないので、戻る前にiに1+1を代入、つまりiを1増やしています。

20151109d.PNG
今回の例は結果として、For~Nextステートメントと変わりませんでしたが、いくらでも応用がききます。セルが空白でなかったら? A1セルとB1セルが同じだったら? なども可能です。また、VLOOKUP関数のように特定のセル範囲をループで検索して、一致する行があったらその情報を取り出すなどにも利用できます。

粗削りですが、これからもいろいろな情報掲載しますのでよろしくです。次回は今回のDo~Loopなどで使う比較演算子についてノートしたいと思います。

この記事へのコメント


この記事へのトラックバック