第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話へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る