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

Excel VBA ベーシック 模擬問題 ランダム順出題 ⓵ 第21問

次のコードは、実行すると【 空欄①  】行目でエラーとなるコードである。

空欄に入るものを、次の選択肢の中から1つ答えなさい。

 

1 Sub Exam1()

2  Dim i As Long, LastRow As Long

3   LastRow = Cells(Rows.Count, 1).End(xlUp).Row

4  For i = 2 To LastRow

5    If Cells(i, 2) > 3 Then

6       With Cells(Rows.Count, 6).End(xlUp)

7       .Offset(1) = Cells(i, 1)

8      Offset(1, 1)= Cells(i, 2)

9      End With

10        End If

11  Next i

12 End Sub

 

VBA Basicステートメント

 

1.3

2.7

3.8

4.10

正解

3

解説

【7章 ステートメント】

【With ステートメント】

With ステートメントは

With.以降の記述をオブジェクトをまとめ省略することができます。

With 省略する対象

End With

の間は

語句の最初に「.」とついている場合はVBAでは「省略する対象」を記述しているとみなされます。

●本問題ではCells(Rows.Count, 6).End(xlUp)が対象ですが

8行目のOffset(1, 1)の前に「.」がついていないので、Offsetプロパティの起点となるセルの指定がなくエラーとなります。

 

次のコードは、実行すると【 空欄  】行目でエラーとなるコードである。

空欄に入るものを、次の選択肢の中から1つ答えなさい。

【コード解説】

1 Sub Exam1()

2  Dim i As Long, LastRow As Long

3   LastRow = Cells(Rows.Count, 1).End(xlUp).Row

4  For i = 2 To LastRow

5   If Cells(i, 2) > 3 Then

6   With Cells(Rows.Count, 6).End(xlUp)

7    .Offset(1) = Cells(i, 1)

8     Offset(1, 1)= Cells(i, 2)

’Offset(1, 1)「.」がついていないので、Offsetプロパティの起点となるセルの指定がなくエラーとなります。

9   End With

10      End If

11  Next i

12 End Sub

 

1.3

正しい。

この行の記述に誤りはなく、エラーとはなりません。

 

2.7

正しい。

このOffsetの前には「.」ピリオドがついていますのでここではエラーになりません。

 

3.8

誤り。

Offset(1, 1)「.」がついていないので、Offsetプロパティの起点となるセルの指定がなくエラーとなります。

 

4.10

正しい。

If ~対してEnd Ifを記述しています。

この行の記述に誤りはなく、エラーとはなりません。