- Home ›
- Excel VBA入門 ›
- 繰り返し処理 ›
- HERE
条件式がFalseの間繰り返す
前のページでは条件を満たす間繰り返しを行う方法について見ましたが、同じような構文で条件を満たさない間繰り返しを行う構文も用意されています。
構文は下記のようになります。
Do Until 条件式 (条件式がFalseの時に行う処理1) (条件式がFalseの時に行う処理2) Loop
この構文の場合、条件式が「False」の間は「Do」と「Loop」の間に書かれた処理を繰り返し行います。
例えば前のページのサンプルは次のように記述することが出来ます。
Dim sum As Integer Dim x As Integer sum = 0 x = 1 Do Until x > 10 sum = sum + x x = x + 1 Loop Range("A1").Value = sum
動作などは「Do While ... Loop」の場合と同様です。異なるのは条件式が「False」の間だけ繰り返しが実行されるということです。
ただ、条件式が「False」の間だけ実行したい場合には論理演算子を使って次のように記述する事もできます。
Dim sum As Integer Dim x As Integer sum = 0 x = 1 Do While Not x > 10 sum = sum + x x = x + 1 Loop Range("A1").Value = sum
論理演算子の「Not」はその後に書かれた条件式の結果を反転させます。その為、「Do Until ... Loop」構文で記述できる内容は「Do While ... Loop」構文でも記述することが出来ます。
「Do While」と「Do Until」の両方を使うとケアレスミスの原因となりますので、条件式の記述で「False」の場合だけ実行するというような記述の方が望ましい場合には論理演算子の「Not」を使って記述したほうがいいのではと思います。(論理演算子については『演算子』を参照して下さい)。
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Dim sum As Integer Dim x As Integer sum = 0 x = 1 Do Until x > 10 sum = sum + x x = x + 1 Loop Range("A1").Value = sum End Sub
上記のマクロを実行すると次のようになります。
今回のサンプルでは1から順に10まで加算した値をセルに表示しています。
( Written by Tatsuo Ikura )