第4講 2次元ループに挑戦しよう。
第1話 2次元ループの簡単な例
1から9までの和を求めるプログラムを考えてみましょう。
Private Sub CommandButton1_Click()
Dim wa As Integer, i As Integer
wa = 0
For i = 1 To 9
wa = wa + i
Next
Cells(5, 1) = wa
End Sub
これと同じ計算は次の2次元ループを使ってもできます。
Private Sub CommandButton1_Click()
Dim wa As Integer, i As Integer, j As Integer
wa = 0
For i = 1 To 3
For j = 1 To 3
wa = wa + 3 * (i - 1) + j
Next
Next
Cells(5, 1) = "1から9までの和"
Cells(6, 1) = wa
End Sub
(サンプル7参照)
3 * (i - 1)の*は×を表します。
×÷はVisual Basicにはないので、
*と/で代用しているのです。
ループする文字が2つあるので2次元ループです。
この動きトレースしてみましょう。
i = 1から始まります。
そして
For j = 1 To 3
wa = wa + 3 * (i - 1) + j
Next
によって、i = 1の間にjは1,2,3と動いていきます。
i = 2のときもi = 3のときも同様ですから、
wa + 3 * (i - 1) + j
の動きをトレースすると、
i=1のとき
1←0+3×(1−1)+1
3←1+3×(1−1)+2
6←3+3×(1−1)+3
i=2のとき
10←6+3×(2−1)+1
15←10+3×(2−1)+2
21←15+3×(2−1)+3
i=3のとき
28←21+3×(3−1)+1
36←28+3×(3−1)+2
45←36+3×(3−1)+3
となり、1から9までの和が計算できることになります。
では皆さんサンプル7を参考にして、
前回の解答例の改良に取り組みましょう。
解答例の改良例
第3講第4話へ 第2話へ