第3講 For文(繰り返し処理)
第9話 成績一覧表の合計算出を2次元For文によって実現する
097
を2次元For文で実現するプログラム例
Private Sub CommandButton1_Click()
  Dim w As Integer, i As Byte, j As Byte
  For i = 0 To 4
    w = 0 '0への初期化
    For j = 0 To 2 '横(各生徒)合計算出
      w = w + Cells(5 + i, 3 + j)
    Next
    Cells(5 + i, 6) = w '横(各生徒)合計算表示
    Cells(5 + i, 7) = w / 3 '横(各生徒)平均表示
  Next
  For i = 0 To 2
    w = 0 '0への初期化
    For j = 0 To 4 '縦(各教科)合計算出
      w = w + Cells(5 + j, 3 + i)
    Next
    Cells(10, 3 + i) = w '縦(各教科)合計表示
    Cells(11, 3 + i) = w / 5 '縦(各教科)平均表示
  Next
End Sub
Private Sub CommandButton2_Click()
  Range("C10:G11").Select
  Selection.ClearContents 'C10からG11までのセルの消去
  Range("F5:G9").Select
  Selection.ClearContents 'F5からG9までのセルの消去
  Range("A1").Select
End Sub

参考ダウンロード添付ファイル

2次元For文にしたらかなりコードがすっきりしましたね。
第3講最後の課題です。
次の添付ファイルを
添付ファイル
を開いてください。
すると、シート
011も、
Private Sub CommandButton1_Click()
  
End Sub
Private Sub CommandButton2_Click()

End Sub
コードも空っぽになっています。
実行ボタンを押すと
097
と同様な値がでて、消去を押すと
011
に戻るようにプログラムしてください。
例えば、C5に100点以下のランダムな整数値を出すには
  Cells(5, 3) = Int(101*Rnd)
とします。
Rndは1未満のランダムな小数を出す乱数です。
Int(*)は*の小数点以下を切り捨てて整数にするものです。
1未満のランダムな小数に101をかけて、
小数部分を切り捨てれば100以下の整数になりますよね。

ただし、以下の条件をつけます。
ランダムな100以下の整数と合計・平均は2次元For文で、
出席番号は1次元For文で行うものとします。
国語や合計などは現時点ではFor文で扱うのは不可能ですから、
1個1個コードを書いていってください。

現時点と書いたのは配列を学んでいない今という意味です。
配列を学べば国語などの表示も1次元For文で扱えるようになります。


第8話へ 第10話へ


トップへ