前回は条件による分岐の書き方を説明しました。今回は同じ処理を複数回繰り返す場合にとても便利な、繰り返し処理のFor文とDo文について説明したいと思います。 条件分岐ができ、繰り返し処理ができるようになると、「鬼に金棒」です。何でもこい!という気持ちになれる…かもしれません。

ゼロからはじめるVBA - 基本編
ゼロからはじめるVBA - VBA事始め編
ゼロからはじめるVBA - セル操作編 ゼロからはじめるVBA - 条件による分岐編

For文

繰り返し処理によく使用されるのがこのFor文です。Basic言語は開発されてからいろいろな命令が追加されてきました。For文(For … Next)は最初から備わっていた命令です。そんな関係で、親しみやすく、繰り返し処理の説明には最初に説明されることが多いようです。

For文の書き方

For文の具体的な書き方を説明します。

(1) For … Next

数値を変更させながら繰り返し処理を行うものに使われます。

[リスト1]For…Nextの構文

For 変数 =初期値 To 終了値 Step ステップ値
   繰り返す処理(複数行可能)
Next

図1:For … Nextフローチャート

変数は繰り返すための数値を入れるものです。初期値から終了値まで、値を変化させながら「Next」までに書かれている処理を行います。ステップ値は、初期値から終了値までの値の変化の量を指定しています。通常は「Step 1」で省略可能です。もちろん「For y=10 to 1 Step -1」のようにマイナス値も大丈夫です。また「0.1」などの小数値も大丈夫です。

以下はセルに書いてある5個のデータの合計を計算するマクロです。Sum関数の中でも以下の処理と同じように足し込み処理がなされています。

以下説明するリストはsample.lzhの中に「For文Do文例題.xlsm」「Do文While文例題.xlsm」「繰り返し処理例題.xlsm」として収録しています。サンプルとしてご活用ください。

[リスト2]ReiFor(For文Do文例題.xlsm)

Sub ReiFor()
    g = 0               '(1)
    For y = 1 To 5
        g = g + Cells(y, 1)
    Next
    Cells(6, 1) = g
End Sub

変数gは合計を入れるための変数です。(1)で変数に0を入れて計算のための準備をしています。For…Nextの間で変数yを1から5に1ずつ増加させながら5回処理を行います。「Cells(y,1)」と書いているので、毎回yの値(セルの行数)を変化させながら変数gへ足し込んでいきます。リスト2の実行結果です

図2:リスト2実行結果