[Excel2013 で VBA] 繰り返し (続き)

前回、繰り返し構造である For 文および While 文をを学んだ。
繰り返し構造にはいくつかのバリエーションがあるが、今回はそれを取り扱い、 繰り返し構造の仕上げとする。

繰り返し (続き)

前回の最後に学んだ While 文は以下のような構造をしていた。



特徴は、条件判定がループの始めに行われていることである。
このプログラムの流れは以下のようであった。

条件判定の位置を意識してもらうために横線「-----」を適宜挿入している。

x = 0
(ここから While 文に入る)
-----
x = 0 は x<=10 を満たす
  s = s + 0
  x = x + 2 (x=2)
-----
x = 2 は x<=10 を満たす
  s = s + 2
  x = x + 2 (x=4)
-----
x = 4 は x<=10 を満たす
  s = s + 4
  x = x + 2 (x=6)
-----
…
-----
x = 10 は x<=10 を満たす
  s = s + 10
  x = x + 2 (x=12)
-----
x = 12 は x<=10 を満たさない
(While 文終了)


繰り返しを行なう While 文には他にもいくつかのバリエーションがある。
今日はそれらを一気に学ぶ。

これらは「全て覚える必要がある」というわけではなく、 この内の一つを覚えておけば用は足りることが多い。
しかし、これらのバリエーションのそれぞれの違いを理解しておくことは有用である。

[条件文が始めにくる場合]
1. 
Do While 条件式
   命令文  (複数で良い)
Loop
2. 
Do Until 条件式
   命令文  (複数で良い)
Loop


[条件文が後にくる場合]
3. 
Do 
   命令文  (複数で良い)
Loop While 条件式
4. 
Do
   命令文  (複数で良い)
Loop Until 条件式


上記のうち、「条件文が始めにくる場合 (1. および 2.)」 は 先週の While 文の動作に近い。
ただし、Until で条件をした場合、条件が満たされないとき繰り返しが行なわれ、条件が満たされたときに終了する
これは While 文と逆なので注意しよう。

「条件文が後にくる場合 (3. および 4.)」 もこれらと似ているのだが、
条件文が後にくるので、命令が少なくとも必ず一回は実行される、という点が異なる。

(条件文が始めに来る場合、命令の前に条件判定があるので、命令が一回も実行されないことがあり得る)

以上の 4 例を「10 以下の偶数の和」の例で実現したのが以下の 4 例である。
結果は全て 30 になるのだが、While と Until による条件文の違いに注意しよう。

いつも通り Excel の VBA を起動して以下を実行せよ。 (Visual Basic Editor の起動方法は「第一回:プログラムを書き始めるまでの準備」参照)

  • 以下の 4 例を全て試して、全て等しい結果 (30) が得られることを確認せよ。


1. 条件文が始め。While


2. 条件文が始め。Until


3. 条件文が後。While


4. 条件文が後。Until






←For 文の続き/While 文による繰り返し配列→

Excel 2013 で学ぶ Visual Basic for Applications (VBA)に戻る