Excel VBA ベーシック 模擬問題 模擬試験

Excel VBA ベーシック 模擬問題 第16問  7章-2

以下のコードは各列の数値の合計を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

VBAベーシックステートメント

 

正解

【 ① 】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となりリセットされ処理を次の列各行処理します。

VBAベーシックステートメント

【コード解説】

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