第4講 2次元ループに挑戦しよう。
第3話 第2話解答解説

@ 表のすべてのセルの合計を出すプログラムを考えましょう。 

@ 解答
実行プログラム
Private Sub CommandButton1_Click()

    Dim wa As Integer, i As Integer, j As Integer

    wa = 0
    For i = 1 To 3
        For j = 5 To 8
            wa = wa + Cells(j, i)
        Next
    Next

    Cells(10, 1) = "表のすべてのセルの合計="
    Cells(10, 4) = wa

End Sub

wa = 0でwaの初期値を0としています。
(ただし、この1行は省略可です。
変数についてなにも書いてない場合は、

Visual Basic方で初期値は0と判断するからです。)
For i = 1 To 3
    For j = 5 To 8
        wa = wa + Cells(j, i)
    Next
Next

では、(j、i)は次のように動きます。
(5,1)→(6,1)→(7,1)→(8,1)→(5,2)→(6,2)→(7,2)→(8,2)→(5,3)→(6,3)→(7,3)→(8,3)

表は次のようになっていますから

2 3 4
5 17 66 88
6 63 30 45
7 65 8 47
8 48 95 78

234は何列目かを表し、5678は何行目かを示す。)
wa = wa + Cells(j, i)の動きは、
17←0+17
80←17+63
145←80+65
193←145+48
259←193+66
289←259+30
297←289+8
392←297+95
480←392+88
525←480+45
572←525+47
650←572+78
となり、17+63+65+48+66+30+8+95+88+45+47+78の計算ができるわけです。
何度も書いてきましたが、
=は←と捉えると理解しやすいですよ。
wa = wa + Cells(j, i)は本来は
wa ← wa + Cells(j, i)です。

第2話へ 第5講第1話へ

講義トップへ

数学研究室に戻る