次のコードは、実行すると【 空欄① 】行目でエラーとなるコードである。
空欄に入るものを、次の選択肢の中から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

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を記述しています。
この行の記述に誤りはなく、エラーとはなりません。