下のコード「Exam1」と「Exam2」は同じ結果になるマクロである。このとき、【 1 】に入る適切な語句を解答しなさい、
Sub Exam1()
Dim i As Long, A As Long
i = 1
Do While Cells(i, 1) <> ""
A = A + Cells(i, 1)
i = i + 1
Loop
MsgBox A
End Sub
ーーーーーーーーーーーーーーーーー
Sub Exam2()
Dim i As Long, A As Long
i = 1
Do【 ① 】Cells(i, 1) = ""
A = A + Cells(i, 1)
i = i + 1
Loop
MsgBox A
End Sub
正解
【 ① 】until
解説
以下はどちらも同じ結果になります。
Do While Cells(i, 1) <> "" 条件Cells(i, 1)<> ""が正しい間は繰り返す( 空欄でない時は)
Do Until Cells(i, 1) = "" 条件Cells(i, 1) = ""が正しくないときは繰り返す( 空欄が正しくない時は) 両方とも空欄でない間は繰り返します。
Do~LoopステートメントでDo に続く条件に「Until」や「 While 」を指定することで、空欄となるまでは条件が正しいとき(While)、あるいは正しくないとき(Until)まで処理を繰り返すステートメントになります。
構文:Do WhileあるいはUntil ①条件
処理
Loop WhileあるいはUntil ⓶条件
条件…①、⓶処理の前か後どちらかに設定できる
また条件の設定は、繰り返しの前、または後、DoあるいはUntilのどちらかに設定可能です。計4パータンです。
繰り返しの前に設定・Do While 条件 ・Do Until 条件
繰り返しの後に設定 ・Loop While 条件 ・Loop Until 条件
[コード解説]
Sub Exam1()
Dim i As Long, A As Long
i = 1
' 変数iを初期化しています。
Do While Cells(i, 1) <> ""
' セル(i, 1)が空でない間、ループを繰り返します。
A = A + Cells(i, 1)
' セル(i, 1)の値をAに加算しています。
i = i + 1
' 次の行に進むためにiをインクリメントしています。
Loop
MsgBox A
' 合計結果をメッセージボックスに表示しています。
End Sub
Sub Exam2()
Dim i As Long, A As Long
i = 1
' 変数iを初期化しています。
Do Until Cells(i, 1) = ""
' セル(i, 1)が空になるまでループを繰り返します。
A = A + Cells(i, 1)
' セル(i, 1)の値をAに加算しています。
i = i + 1
' 次の行に進むためにiをインクリメントしています。
Loop
MsgBox A
' 合計結果をメッセージボックスに表示しています。
End Sub