見出し画像

【Day37】文系オタクのエンジニア道~ステートメント 問題演習~

こんにちは
安田です


行のオブジェクト Row

Q
セルC2~C6に「100」と入力したい。このとき、【 1 】【 2 】に入る適切なものを選ぶ

Sub Test1()

    Dim i As Long, A As Long, B As Long

    A = 100
    B = Cells(Rows.Count, 1).【 1 】.【 2 】

    For i = 2 To B
        Cells(i, 3) = A
    Next i

End Sub

A
【1】End(xlUp) 【2】 Row

解説

「Rows.Count」は、最大行数を取得
「Cells(Rows.Count, 1)」はA列の一番下のセル(A1048576)を取得

一番下のセルからEnd(xlUp)(ctrl + ↑)を押した時、A6になる

「Cells(Rows.Count, 1).End(xlUp).Row」と記述した場合
「A6」の「6」を取得するために
.End(xlUp).Row」が答えとなります

変数Bに「6」が代入されたことで、「For i = 2 To 6」と同じ処理になるため、セルC2~C6に「100」が入力される

参考文献


Ifステートメント

Q
セルA1の値が70より大きい場合は「合格」、それ以外の場合は「不合格」と表示したい。このとき、【 1 】【 2 】に入る適切な内容を答えよ

Sub Test1()

   【 1 】 Range("A1") > 70 Then

        MsgBox "合格"

    Else

        MsgBox "不合格"

   【 2 】

End Sub

A
【1】If 【2】 End If

If 条件式 Then
 処理1
Else
 処理2
End If
Ifステートメントの最後は「End If」で終わらせる

https://vba-workbook.com/excel-vba-basic/6005-2

参考文献


Withステートメント

指定したオブジェクトに対して、複数の処理を行う場合
オブジェクトを省略することができる

Q
マクロ「Test1」を実行したところ、次の図のようにA列の値が70以上の場合は、B列に「合格」、それ以外の場合はB列に「不合格」が入力された。このとき、【 1 】に入る適切な内容を答えよ

Sub Test1()

    Dim i As Long

    For i = 2 To 6

        【 1 】 Cells(i, 1)
            
       If .Value >= 70 Then
                .Offset(0, 1).Value = "合格"
            Else
                .Offset(0, 1).Value = "不合格"
            End If

        End 【 1 】

    Next i

End Sub

A
With

Withステートメント内で「.」から記述を開始した場合、「.」の前に指定したオブジェクト名を記述した場合と同じ処理を実行する

参考文献


まとめ

正答率としては50%でした
今回は自分がミスした問題をピックアップして
まとめました

実際にコードを書いて
エクセルで実行してみると
自分の回答がエラーになることが分かりました

また実践しながら、インプットをしていきます

参考文献

VBAマスターに俺はなる

最後まで読んでいただき
ありがとうございます
安田

マガジンにまとめてありますので
よかったらそちらも御覧ください


この記事が気に入ったらサポートをしてみませんか?