4、VBAによるマクロの作成(基礎編)
4−7、繰り返し処理(1)
繰り返し処理(1)
同じような処理を何回も続けて行う場合、その回数分だけコードを記述するのは得策とはいえません。2、3回ならその分コードを書いてもそんなに手間はかかりませんが、処理回数が100回とかになると、同じ記述を100回も書くのはさすがに面倒です。そこで、便利なのが繰り返し命令です。
ここでは、繰り返す回数が決まっている場合の記述のしかたを説明します。例7)
まず、簡単な繰り返し命令を実行してみます。
ワークシートを5枚追加するというマクロを作成します。Sub Example7()
For Maisuu = 1 To 5
Worksheets.Add
Next
End Sub記述後、「マクロの実行」から「Example7」を実行してください。
【このコードの解説】
- 繰り返す回数が決まっている場合の、繰り返し処理に使う命令は「For 〜 Next」です。
For Maisuu = 1 To 5
Worksheets.Add
Next日本語にすると・・・
「Maisuu」の値が1から5になるまで
ワークシートの追加
を繰り返しなさい
この命令には繰り返しの回数をカウントするための変数が不可欠になります。変数名は何でもかまいません。上の例の場合は「Maisuu」にあたります。
「For」の後にその変数の初期値、続けて「To」の後に繰り返しが終了するときの値を書きます。
Nextで繰り返されるたびに「Maisuu」の値が一つずつ増え、その値が5まで増えると、この繰り返しから抜け出します。この場合、繰り返しの回数は5回となるので5枚のシートのが追加(Worksheets.Add)されるわけです。
※では、例8でこれを応用させてみましょう。
例8)
※「Example1」〜「Example6」の続きです。
2人目の生徒「佐藤」君の合計点を計算します。
Sub Example8()
Dim Keisan As Integer
Keisan = 0
Worksheets("Sheet1").Select
For n = 2 To 4
Tensuu = Cells(3,n).Value
Keisan = Keisan + Tensuu
Next
Range("E3") = Keisan
End Sub記述後、「マクロの実行」から「Example8」を実行してください。
【このコードの解説】
- 変数「Keisan」を整数型として宣言し、初期値として0(ゼロ)を入力(0リセットといいます)します。
Dim Keisan As Integer
Keisan = 0
- 繰り返しの部分の解説
For n = 2 To 4
Tensuu = Cells(3,n).Value
Keisan = Keisan + Tensuu
Nextこの場合の繰り返しをカウントする変数は「n」です。
この「n」が2から始まり、繰り返されるたびに一つずつ増え、4になったら繰り返しをやめます。
具体的には・・・
1回目
nの値は2なので、セル(3,2)、つまりB3の値(国語の点数)を取得し、変数「Tensuu」に格納。
1回り目の変数「Keisan」の値(0)と今格納された「Tensuu」の値を足して「Keisan」に入れ直します。(国語の点数が格納されます。)
nの値が1つ増え、繰り返し。
2回目
nの値は3なので、セル(3,3)、つまりC3の値(数学の点数)を取得し、変数「Tensuu」に格納。
1回り目で新たに格納された変数「Keisan」の値と今格納された「Tensuu」の値を足して「Keisan」に入れ直します。(国語と数学が足されたことになります。)
nの値が1つ増え、繰り返し。
3回目
nの値は4なので、セル(3,4)、つまりD3の値(英語の点数)を取得し、変数「Tensuu」に格納。
2回り目で新たに格納された変数「Keisan」の値と今格納された「Tensuu」の値を足して「Keisan」に入れ直します。(国語、数学、英語の点数が足されたことになります。)
nの値は4で、終了の条件を満たしているので、繰り返しを終了します。
- 今回の場合、繰り返しの回数は3回なので、繰り返しをカウントする変数「n」は「1から3まで」でもいいのですが、この「n」をセルの値を取得するのに利用しています。「2から4まで」にすれば、セルの取得にも利用できるし、繰り返しの回数も3回に設定できるわけです。
- 結果的に国語、数学、英語の点数を1つずつ取得し、それを1つずつ順番に加算していき、合計点を算出しているわけです。
+α講座
- 「Next」の部分で繰り返しを行う際、カウントする変数は自動的に1つずつ増やされていました。しかし、この増え幅を自由に設定することもできます。
例えば、「nを1から10まで2ずつ増やす場合」を考えます。1から10までを2ずつ増やすので、このときの繰り返しの回数は5回になります。このような場合は以下のように記述します。For n = 1 To 10 Step 2
(繰り返しを行う処理)
Next「Step」の部分で増え幅を設定します。