条件式がTrueの間繰り返す

広告

繰り返し処理とは同じような処理を何度も記述する場合に便利な構文です。

例えば数字の1から始めて2,3,4,5と順に加えていき10まで加えるというプログラムを作成してみます。単純に書けば次のようになります。

Dim sum As Integer

sum = 0

sum = sum + 1
sum = sum + 2
sum = sum + 3
sum = sum + 4
sum = sum + 5
sum = sum + 6
sum = sum + 7
sum = sum + 8
sum = sum + 9
sum = sum + 10

Range("A1").Value = sum

1から10までならこのように書けますけど、1から100までの合計だったら同じような文がずらずらっと並んで記述するのも大変です。このような場合に繰り返し処理を使うと便利です。

繰り返し処理を行うには色々な構文がありますが、まず「Do While ... Loop」文を見ていきましょう。構文は下記のようになります。

Do While 条件式
    (条件式がTrueの時に行う処理1)
    (条件式がTrueの時に行う処理2)
Loop

この構文の場合、条件式が「True」の間は「Do」と「Loop」の間に書かれた処理を繰り返し行います。

例えば先ほどの例を書き換えてみましょう。

Dim sum As Integer
Dim x As Integer

sum = 0
x = 1

Do While x <= 10
    sum = sum + x

    x = x + 1
Loop

Range("A1").Value = sum

まず変数「sum」と「x」を用意します。変数「sum」は合計した値を格納する変数、変数「x」は次に加える値を格納する変数です。

次に繰り返し処理の中身を見ていきます。まず条件式「x <= 10」を評価します。

最初の時点では変数「x」には1が入っていますので条件式は「True」です。よって「Do」の行と「Loop」の行の間に書かれた処理が実行されます。つまり変数「sum」に変数「x」の値が加算された値が改めて変数「sum」に格納されます。つまり変数「sum」には1が格納されます。そして変数「x」の値に1が加えられた値が変数「x」に格納されます。つまり変数「x」には2が格納されます。

「Do」の行と「Loop」の行の間に書かれた処理が全て実行されるとまた繰り返し処理の先頭に戻り改めて条件式が評価されます。

今度は変数「x」には2が格納されていますので今度も条件式は「True」です。よって今度は変数「sum」には2が加えられて変数「sum」の値は3となり、変数「x」の値は今度は3が格納されます。

このように何度も繰り返し処理が行われていき、変数「x」に11が格納された後に条件式が評価された時に「False」となります。条件式が「False」となった時に繰り返し処理は終了し「Loop」の後の行に処理が移ります。つまり「Range("A1").Value = sum」が実行されます。

繰り返し処理を使うことで1から1000まで追加するようなプログラムでも簡単に記述することが出来ます。先ほどの例で言えば条件式を「x <= 1000」に変更するだけです。

サンプルプログラム

では簡単なサンプルで試してみましょう。

testloop1.bas

Sub テスト()
    Dim sum As Integer
    Dim x As Integer

    sum = 0
    x = 1

    Do While x <= 100
        sum = sum + x

        x = x + 1
    Loop

    Range("A1").Value = sum

End Sub

上記のマクロを実行すると次のようになります。

繰り返し処理

今回のサンプルでは1から順に100まで加算した値をセルに表示しています。

Excel VBA入門の他の記事を見てみる

( Written by Tatsuo Ikura )