名称未設

【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

バックナンバー


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