【ExcelVBA公開模試】Do Whileのループを抜ける手段は1通りではない
文法を無視して、とりあえず動けばいいという邪道ExcelVBA講座こと「速読VBA単語」に準拠した問題を出題します。
問題
図1の表について、静岡県静岡市のように、C列の地名がB列の都道府県名に含まれているものを探して、D列に〇印をつけるコードを記述した。
Sub moshi()
i = 2
Do While Cells(i, 2) <> ""
If Cells(i, 2) Like "*" & Cells(i, 3) & "*" Then
Cells(i, 4) = "〇"
End If
i = i + 1
Loop
End Sub
2行目から探して、〇印を10個つけたら終了するようにしたい(図2)。次の(1)~(3)の方法により修正しなさい。
(1)Do Whileの条件を追加する
(2)Exit Doを用いる
(3)スイッチ(フラグ)を用いる
<図1>
※出題者注:東京都の公式見解では「東京都庁所在地は?」と聞かれたら新宿区西新宿二丁目と答えるのが正解だそうです。
<図2:完成イメージ>
わえなび式 正解例
(このページの下にあります)
目標回答時間
プロ3分以内、アマチュア10分以内に処理ができたら合格
この問題の出題範囲
「速読VBA単語」Program3-8まで
ご案内
ExcelVBAをなんとなく理解できればいいという初心者のための「速読VBA単語」を受講希望の方はカリキュラムをご覧ください。
正解例
3通りの方法のうち、どの方法が正しいかは別として、「ループの抜け方にはいろいろな方法がある」ということを知り、使いこなせるようにするべきです。
Sub kakko1()
i = 2
cnt = 0
Do While Cells(i, 2) <> "" And cnt < 10
If Cells(i, 2) Like "*" & Cells(i, 3) & "*" Then
Cells(i, 4) = "〇"
cnt = cnt + 1
End If
i = i + 1
Loop
End Sub
Sub kakko2()
i = 2
cnt = 0
Do While Cells(i, 2) <> ""
If Cells(i, 2) Like "*" & Cells(i, 3) & "*" Then
Cells(i, 4) = "〇"
cnt = cnt + 1
If cnt = 10 Then Exit Do
End If
i = i + 1
Loop
End Sub
Sub kakko3()
i = 2
cnt = 0
sw = 0
Do While Cells(i, 2) <> "" And sw = 0
If Cells(i, 2) Like "*" & Cells(i, 3) & "*" Then
Cells(i, 4) = "〇"
cnt = cnt + 1
If cnt = 10 Then sw = 1
End If
i = i + 1
Loop
End Sub
バックナンバー
この記事が気に入ったらサポートをしてみませんか?