以下のコードは各列の数値の合計を7行目の合計行に代入するマクロである。
コード内の空欄に入る適切な語句を解答しなさい。
Sub Exam1()
Dim A As Long, i As Long, j As Long
For j = 2 To 4
A = 0
For i = 2 To 6
A = A + 【 ① 】
Next i
Cells(7, j) = A
Next j
End Sub
正解
【 ① 】cells(i, j)、cells(i, j).value
解説
【7章 ステートメント】
このマクロは、B列(列2)からD列(列4)の各列の2行目から6行目までの値を合計し、その合計値を7行目の対応する列に代入します。以下に解説を行います。
●For…Nextステートメントのネスト(入れ子)と、カウンタ変数の問題です。
For…Nextステートメントを複数使用するとき、変数はそれぞれ別の変数を使用できます。
●本問題の変数ですが、先に変数jが2と格納され処理(繰返し処理①)がはじまります。
その後で変数jが2の状態で変数iに2が格納されます。(繰返し処理②)
変数Aの初期値は0ですので
A = A + Cell(i,j) イコールの右側は 0+90、Cell(2,2)
つまりセルのB2の値が格納され=の右側のAには90が代入されます。
●次の繰り返し処理ではA = A + Cells(i, j) 時は右辺のAには初期値として90が入った状態で計算します。
以後 iが2の状態(B列)で、jには3から6(行目)までセルの値が1つずつ加算され格納されます。
A = 0 でAに代入されたAは0となりリセットされ処理を次の列各行処理します。
【コード解説】
Sub Exam1()
Dim A As Long, i As Long, j As Long
For j = 2 To 4
’①For'Nextステートメント変数「j」へ2から4の間で代入し、繰り返し処理をする。
A = 0
'Aの値を0にリセット
For i = 2 To 6
’②For'Nextステートメント 変数「i」へ2から6の間で代入し、繰り返し処理をする。
A = A + Cells(i, j)
'変数iでセルに2~6行目まで、変数jで2~4列目までを格納する。
Next i
' For'Nextステートメント終了値まで変数「i」の繰り返し処理②へもどる。
Cells(7, j) = A
'合計行に変数Aを代入
Next j
' For'Nextステートメント 終了値まで変数「j」の繰り返し処理①へもどる。
End Sub