Home » いちばんやさしいExcel VBAの教本 » Do~Loop文をどう学習すべきか

対象:Excel 2010, Excel 2013, Windows版Excel 2016

Do~Loop文をどう学習するか

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文は以下の形になっています。
 Do
  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なら以下のとおりです。
 Do While i <= 5
  Range("B" & i).Value = "合格"
  i = i + 1
 Loop
ループを続けるWhile条件を後ろに置くなら以下のとおりです。
 Do
  Range("B" & i).Value = "合格"
  i = i + 1
 Loop While i <= 5
Do Until~Loopなら以下のとおりです。
 Do Until i > 5
  Range("B" & i).Value = "合格"
  i = i + 1
 Loop
これもループを続けるUntil条件を後ろに置くなら以下のとおりです。
 Do
  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

[スポンサードリンク]

Home » いちばんやさしいExcel VBAの教本 » Do~Loop文をどう学習すべきか

「いちばんやさしいExcel VBAの教本」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.