Top

hiroyuki.tank.support.site

簡単!マクロ講座

第46回〜Do Loopいろいろ〜


 前回Loop構文を使いました。
 Loop構文はプログラムで非常によく使います。いくつかのパターンがあり,知っておくと幅が広がりますので今回はこれを紹介します。

 基本的にLoopには「前判定」と「後判定」というものがあります。
【書式1】
  Do 終了条件
   (繰り返し実行する処理)
  Loop

【書式2】
  Do
   (繰り返し実行する処理)
  Loop 終了条件

 「終了条件」というのは例えば,「i > 10」のように「iが10より大きかったらループから抜ける」というような条件のことです。
 終了条件をループに入る前に指定する方法を「前判定」といい,前判定では,条件によっては繰り返し処理が一度も実行されないままLoop以降へ処理を移します。(結局繰り返し実行するという箇所は通過しないということです)
 逆に,「後判定」ではループの終了条件がLoopに続けてありますので,ループ内の処理は最低1度は実行されます。
 前判定でも後判定でも次の条件式を使います。

 条件が成立するまで Do Until
 条件が成立している間 Do While

 これではなにがなんやらわからないかもしれませんから,例を出しましょう。

*******************************************************************************
  Sub 前判定Until()
    i = 1
   Do Until i > 10
    i = i + 1
   Loop
     MsgBox "カウンタは " & i & " になりました。"
  End Sub
*******************************************************************************
  Sub 後判定Until()
    i = 1
   Do
    i = i + 1
   Loop Until i > 10
    MsgBox "カウンタは " & i & " になりました。"
  End Sub
*******************************************************************************
  Sub 前判定While()
    i = 1
   Do While i > 10
    i = i + 1
   Loop
    MsgBox "カウンタは " & i & " になりました。"
  End Sub
*******************************************************************************
  Sub 後判定While()
    i = 1
   Do
    i = i + 1
   Loop While i > 10
    MsgBox "カウンタは " & i & " になりました。"
  End Sub
*******************************************************************************

 実際にこのコードをVBEに書いて実行してみてください。どのようにプログラムが流れているかを考えてみてください。
 これもいろいろやってみて慣れることが大切です。
 それと,どれを使うかは時と場合によるというよりも,その人の好みでしょう。このような例を知った上で,自分が使いたい構文を一つ決めてそれを場合に合わせるということがよいと思います。
 ちなみに私は次のパターンをよく使います。
  Do Until 終了条件
    (繰り返し実行する処理)
  Loop

 なお,繰り返す回数が決まっている場合は第16回でやったForNextを使いましょう。こちらの方が簡単で便利です。

| hiroyuki.tank.support.site.Top | このページのTop | マクロ講座目次 | 前回 | 次回 |