第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 入門 基礎から応用まで
数学研究室に戻る