For~Next文で書けるExcelマクロをあえてDo~Loop文で書くとどのようなコードになるか、記事にしました。
Do~Loop文を機械的に覚えた方の中には、ご紹介したDo~Loop文を疑問に感じた方がいらっしゃるかもしれません。
多くのExcel VBA入門書では、Do~Loop文には、Do While~LoopとDo Until~Loopがあり、更にループを抜ける判断を前で行うか後ろで行うのかの、合計4種類があるといったことが書かれています。
しかし私がご紹介したSubプロシージャでは、WhileやUntilという単語が出てきません
While・Untilを使わないDo~Loop
具体的なコードを見ましょう。
先日の記事ではDo~Loop文は以下の形になっています。Range("B" & i).Value = "合格"
i = i + 1
If i > 5 Then Exit Sub
Loop
Do While~Loop・Do Until~Loopのサンプル
Do~Loop文を機械的に覚えた方は、以下のようなコードを見慣れているはずです。
Do While~Loopなら以下のとおりです。Range("B" & i).Value = "合格"
i = i + 1
Loop
Range("B" & i).Value = "合格"
i = i + 1
Loop While i <= 5
Range("B" & i).Value = "合格"
i = i + 1
Loop
Range("B" & i).Value = "合格"
i = i + 1
Loop Until i > 5
4パターンのDo~Loop文を機械的に覚えるのは大変では?
これら4パターンのDo~Loop文より、WhileもUntilも使わない、
Do
Range("B" & i).Value = "合格"
i = i + 1
If i > 5 Then Exit Sub
Loop
ほうが、行数は増えますけれど、意味は理解しやすいと感じませんか?
WhileやUntilを使う場合、ループを回し続ける条件なのか、ループを抜ける条件なのか、書きなれるまではどうしても戸惑うはずです。
これに対してWhileやUntilを使わない場合は、単なるIf文が入っているだけですから、戸惑いは少ないでしょう。
このことが理解できてから、
If i > 5 Then Exit Sub
のようなIf文のうち、DoやLoopの直後でも簡単に書ける条件が、WhileやUntilを使った形で書かれるに過ぎない、と考えてみるといかがでしょう。
Do Whileループや、Do Untilループを苦手としている方も、理解しやすくなるのではないでしょうか。
拙著『いちばんやさしいExcel VBAの教本』では扱わなかった、Do~Loop文の学習時に参考にしていただければ幸いです。
最終更新日時:2018-12-27 09:47
- Newer:ChartTitleで、このオブジェクトにはタイトルがありません。とは
- Older:VBAで選択図形を最背面に移動する
Home » いちばんやさしいExcel VBAの教本 » Do~Loop文をどう学習すべきか