第6講 同じことの横縦の繰り返し(2次元ループ)
第1話 同じことを横縦に繰り返す
手始めに、次のマクロを組んでみましょう。
の状態から実行ボタンを押すと、
と100以下のランダムな整数が発生する・・・
そのプログラム例は、・・・30行下。
プログラム例
Private Sub CommandButton1_Click()
Dim i As Byte
For i = 1 To 10
Cells(6, 1 + i) = Int(100 * Rnd())
Next
End Sub
と簡単ですが、
10行に渡って、
ランダムデータを発生させるとなると、
同じことの横縦の繰り返し(2次元ループ)を知らないと、
次のように組むしかありません。
Private Sub CommandButton1_Click()
Dim i As Byte
For i = 1 To 10
Cells(6, 1 + i) = Int(100 * Rnd())
Next
For i = 1 To 10
Cells(7, 1 + i) = Int(100 * Rnd())
Next
For i = 1 To 10
Cells(7, 1 + i) = Int(100 * Rnd())
Next
For i = 1 To 10
Cells(8, 1 + i) = Int(100 * Rnd())
Next
For i = 1 To 10
Cells(9, 1 + i) = Int(100 * Rnd())
Next
For i = 1 To 10
Cells(10, 1 + i) = Int(100 * Rnd())
Next
For i = 1 To 10
Cells(11, 1 + i) = Int(100 * Rnd())
Next
For i = 1 To 10
Cells(12, 1 + i) = Int(100 * Rnd())
Next
For i = 1 To 10
Cells(13, 1 + i) = Int(100 * Rnd())
Next
For i = 1 To 10
Cells(14, 1 + i) = Int(100 * Rnd())
Next
End Sub
でもこれは縦に同じことを繰り返しています。
繰り返しは人間が行うのではなく、
コンピュータにやらせるべきです。
そこで同じことの横縦の繰り返し=2次元ループが出てくるわけです。
これを使うと、この複雑なプログラムの文章は、
Private Sub CommandButton1_Click()
Dim i As Byte, j As Byte
For i = 1 To 10
For j = 1 To 10
Cells(5 + i, 1 + j) = Int(100 * Rnd())
Next
Next
End Sub
と簡単なものになります。
同じことの横縦の繰り返しを使えば、
第4講で組んだ成績一覧表マクロも実は簡単に組めたわけです。
ですが、
Private Sub CommandButton1_Click()
Dim i As Byte, j As Byte
For i = 1 To 10
For j = 1 To 10
Cells(5 + i, 1 + j) = Int(100 * Rnd())
Next
Next
End Sub
を見て『意味が全然わからん!』と心の中で叫んでいる人いっぱいいますよね。
大丈夫ですよ。
次話で詳しく説明します。
第5講第9話へ 第2話へ
vc++講義へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義へ
VB講義基礎へ
初心者のためのJava 入門 基礎から応用まで
数学研究室に戻る