第9講 For文以外の様々なループ文

第1話 ループ文の種類

VBAには、For文以外に様々なループ文=繰り返し処理が用意されています。
それは、While文、Do While...Loop文、Do...Loop While文、Do Until...Loop文、Do...Loop Until文の5つです。
それぞれ、
While 条件式
    ・
    ・
    ・
Wend

Do While 条件式
    ・
    ・
    ・
Loop

Do
    ・
    ・
    ・
Loop While 条件式

Do Until 条件式
    ・
    ・
    ・
Loop

Do 
    ・
    ・
    ・
Loop Until 条件式
の形で使います。

While文、Do While...Loop文、Do...Loop While文は、条件式を満たしている間繰り返し処理が行われます。
Do Until...Loop文、Do...Loop Until文では、条件式を満たすまで繰り返し処理が行われます。
While文、Do While...Loop文、Do...Loop While文では、条件式が真のとき繰り返し処理が行われ、
Do Until...Loop文、Do...Loop Until文では、条件式が偽の間繰り返し処理が行われます。
例を挙げておくと、
While i <= 10
    ・
    ・
    ・
Wend

Do Until i > 10
    ・
    ・
    ・
Loop
まったく同じ処理をすることになります。While文の方が、iが10以下の間繰り返されます。
Do Until...Loop文では、iが10になるまで繰り返されます。


そして、While文、Do While...Loop文、Do Until...Loop文においては、条件式の判断が前に行われるのに対して、
Do...Loop While文、Do...Loop Until文は条件式の判断が後に行われます。

つまり、While(間)、Until(まで)と判断の前後の違いがあります。

While文、Do While...Loop文、Do...Loop While文、Do Until...Loop文、Do...Loop Until文について、重要な注意があります。
うっかり、
Dim w As Integer, i As Integer
w = 0
i = 1
While i <= 10
  w = w + i
Wend
としてしまうと、永久ループになってしまします。
ただし、VBAの場合途中で、整数型の限界を超えるので、オーバーフローしましたとエラー表示されますが。
例えば、
w = 0
i =
0
While i <= 10
  w = w + i
Wend
なら、まさに永久ループします。
i =
0ですから、永遠に条件式i <= 10は満たされます。
したがって、While文、Do While...Loop文、Do...Loop While文、Do Until...Loop文、Do...Loop Until文についての重要な注意とは、
常に永久ループになる可能性があるので、十分気をつけなければならないということです。
この例の場合、永久ループにならないようにするためには、
w = 0
i =
0
While i <= 10
  w = w + i
  
i = i + 1
Wend
とすれば、処理はiが10を超えた段階で終了となります。
つまり、処理を終わらすための
i = i + 1条件式などが不可欠だということです。

では、いつものように演習に入りましょう。次のようなシートを作り、While文によって実現してください。
シート例これは、1からB5に入力されている値までの和を求めるマクロです。



第8講第10話へ 第2話へ

004


vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る