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ベーシックステートメント

1. Cells(i, j).Value

2. Cells(i, j)

3. Cells(7, j).Value

4. Cells(7, j)

 

正解

1、2

解説

【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ベーシックステートメント

以下のコードは各列の数値の合計を7行目の合計行に代入するマクロである。

コード内の空欄に入る適切な語句を選択肢からすべて選びなさい。

 

1. Cells(i, j).Value

正しい。

Cells(i, j).Valueは、i行目j列目のセルの値を取得します。

 

2. Cells(i, j)

正しい。

Cells(i, j)は、i行目j列目のセルを取得します。 セルの値を取得する場合は、Cells(i, j).Valueと記述するのが一般的ですが、Cells(i, j)と記述しても、セルの値が取得されます。

 

3. Cells(7, j).Value

誤り。

Cells(7, j).Valueは、7行目j列目のセルの値を取得します。

7行目j列目のセルは、指定の各列の数値を代入するセルではありません。

 

4. Cells(7, j)

誤り。

Cells(7, j)は、7行目j列目のセルを取得します。

7行目j列目のセルは、指定の各列の数値を代入するセルではありません。

 

【コード解説】

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