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

Excel VBA ベーシック 模擬試験 ランダム順出題 ② 第3問

次のコードを実行したとき、メッセージに表示される値を選択肢から解答しなさい。

 

Sub Exam1()

  Dim i As Long, N As Long

   For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step 2

    If Cells(i, 1) = 1 Then

     N = N + Cells(i, 1).Value

    End If

   Next i

    MsgBox N

End Sub

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

1.1

2.2

3.3

4.4

 

 

正解

2

解説

【7章 ステートメント】

【For…Nextステートメント 行数分繰り返す】

Rowプロパティ…行番号(数)を取得する

構文

セル.Row

・同様にColumnプロパティ…列数を取得するがあります。

 

Cells(Rows.Count, 列数).End(xlUp).Row 

指定列の「Rows.Count」で行数を数えて「End(xlUp)」でワークシートの一番下から上へ進みRowプロパティで最終行数を取得する記述です。

これら記述やFor…Nextステートメントを組み合わせて行数分繰り返します。

 

 

【コード解説】

次のコードを実行したとき、メッセージに表示される値を選択肢から解答しなさい。

Sub Exam1()

  Dim i As Long, N As Long

’変数を宣言します。

   For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step 2

’①繰り返し処理で開始値2から、A列の最終行数をRowプロパティで取得し、終了値の最終行数まで2ずつ増加させて処理を繰り返す。

2行目、4行目、6行目と…2ずつ増加させて処理を繰り返す。

’Cells(Rows.Count, 1)A列の行数を行数をRows.Countで取得する。

’.End(xlUp)一番下シートの一番下から上に向かって進み値があるセルを見つけます。

’Row 行数を取得する。

’Step 2

    If Cells(i, 1) = 1 Then

’条件分岐セル値が1の時は、以下の処理を行う。

     N = N + Cells(i, 1).Value

’変数Nに条件に合ったセルの値を代入する。

’初回の変数Nの値は初期値の0のカウンタ変数です。条件にあった数だけセルの値1を代入加算して行きます。

    End If

   Next i

’①へ終了値まで繰り返しもどる。

    MsgBox N

’ 変数Nの合計値をメッセージで表示する。

End Sub

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

1.1

誤り。

2行目と4行目が条件に合います。

開始値2より2ずつ増えますので、開始値あるいは増加する値のいずれかが間違えてる可能性があります。

 

2.2

正しい。

開始値2より2ずつ増えますので条件に合うあう対象は、2行目と4行目です。

 

3.3

誤り。

開始値2より2ずつ増えますので、開始値あるいは増加する値のいずれかが間違えてる可能性があります。

 

4.4

誤り。

すべての条件に当てはまる行が対象ではなく偶数行が対象です。開始値2より2ずつ増えます。