【ExcelVBA公開模試】ElseIfと普通のIfの違いを理論的に理解せよ
文法を無視して、とりあえず動けばいいという邪道ExcelVBA講座こと「速読VBA単語」に準拠した問題を出題します。
問題
セルA1~A100にランダムに数値が入力されている。次の4つのコードを実行するとそれぞれどのような実行結果になるか述べなさい。また、この中で最も適切なコードはどれか、理由を付けて述べなさい。
(1)
Sub kakko1()
For i = 1 To 100
If Cells(i, 1) >= 80 Then
Cells(i, 2) = "優"
End If
If Cells(i, 1) >= 70 Then
Cells(i, 2) = "良"
End If
If Cells(i, 1) >= 60 Then
Cells(i, 2) = "可"
End If
Next
End Sub
(2)
Sub kakko2()
For i = 1 To 100
If Cells(i, 1) >= 60 Then
Cells(i, 2) = "可"
End If
If Cells(i, 1) >= 70 Then
Cells(i, 2) = "良"
End If
If Cells(i, 1) >= 80 Then
Cells(i, 2) = "優"
End If
Next
End Sub
(3)
Sub kakko3()
For i = 1 To 100
If Cells(i, 1) >= 80 Then
Cells(i, 2) = "優"
ElseIf Cells(i, 1) >= 70 Then
Cells(i, 2) = "良"
ElseIf Cells(i, 1) >= 60 Then
Cells(i, 2) = "可"
End If
Next
End Sub
(4)
Sub kakko4()
For i = 1 To 100
If Cells(i, 1) >= 60 Then
Cells(i, 2) = "可"
ElseIf Cells(i, 1) >= 70 Then
Cells(i, 2) = "良"
ElseIf Cells(i, 1) >= 80 Then
Cells(i, 2) = "優"
End If
Next
End Sub
わえなび式 正解例
(このページの下にあります)
目標回答時間
回答時間無制限です。全部正確に答えられたら合格です。
この問題の出題範囲
「速読VBA単語」Program3-5まで
ご案内
ExcelVBAをなんとなく理解できればいいという初心者のための「速読VBA単語」を受講希望の方はカリキュラムをご覧ください。
考え方
これは「If 70以上」と「ElseIf 70以上」の違いが分かるかどうかがポイント。
・「If 70以上」は無条件に70以上なので当然80以上も含まれる。
・「ElseIf 70以上」は70以上であっても、それ以前にIfまたはElseIfによって処理が終わっている人は対象外となる。
正解例
(1)
60点以上の人全員「可」
代入は上書きなので原則として下の文が優先。80点以上を優にしても、60点以上がすべて可で上書きされてしまう。
(2)
60点以上の人「可」、さらに70点以上が「良」、さらに80点以上が「優」
ただし、80点以上の人は「可」→「良」→「優」と3回代入することになるので無駄な処理をしている。
(3)
80点以上が「優」、70点以上が「良」、60点以上が「可」
ElseIfは「それ以外でもし~だったら」という意味であり、80点以上、70点以上の人が2回以上代入されることがない。もちろん、これが最も良い。
(4)
60点以上の人全員「可」
60点以上の人が全員「可」となり、ElseIfは「それ以外でもし70点(80点)以上だったら」となるが、すでに、60点以上の人全員の処理が終わっているので、70点以上、80点以上の人は存在しない。
バックナンバー
この記事が気に入ったらサポートをしてみませんか?