第7講 Do While〜Loop文(繰り返し処理2)
第3話 Do While〜Loop文による2次元ループ
自然配列
3 | 4 | 5 | 6 | |
5 | 1 | 2 | 3 | 4 |
6 |
5 | 6 | 7 | 8 |
7 |
9 | 10 | 11 | 12 |
8 |
13 |
14 | 15 | 16 |
を発生させるプログラムをDo While〜Loop文によって、作ってみましょう。
サンプル702参照
Private Sub CommandButton1_Click()
Dim i As Integer, j As Integer, w As Integer
i = 1
Do While i < 5
j = 1
Do While j < 5
Cells(i + 4, j + 2) = 4 * (i - 1) + j
j = j + 1
Loop
i = i + 1
Loop
End Sub
j=1の位置に気をつけてください。うっかりすると
Private Sub CommandButton1_Click()
Dim i As Integer, j As Integer, w As Integer
i = 1
j = 1
Do While i < 5
Do While j < 5
Cells(i + 4, j + 2) = 4 * (i - 1) + j
j = j + 1
Loop
i = i + 1
Loop
End Sub
でいいような気がしてしまいますが、実行してみると
3 | 4 | 5 | 6 | |
5 | 1 | 2 | 3 | 4 |
となってしまって、下3行ができません。
なぜなら、上のプログラムでは、
i=1のときは、
Do While j < 5
Cells(i + 4, j + 2) = 4 * (i - 1) + j
j = j + 1
Loop
は実行されますが、
i=2のときには、実行されません。
理由は、i=1の一番最後にj=5となってしまっているので、
条件式 j < 5を満たさないからです。
ですから、ループが始まる前にj=1としてリセットしなければならないのです。
では皆さん、第6講で作った4次魔方陣プログラムの3つ
4次魔方陣プログラムその1
4次魔方陣プログラムその2
4次魔方陣プログラムその3
をDo While〜Loop文によって改良してみましょう。