Do文

繰り返し処理にはDo文もあります。Do文について説明します。

Do文の書き方

繰り返し回数が条件によって決まる処理等にDo文が使われます。

(1)Do … Loop

最初にDo … Loopの書き方を説明します。この処理は条件式の設定がないので、VBAで抜ける処理を書かないと無限ループに入ります。通常あまり使用されないDo文ですが、基本の形なので、最初にもってきました。無限ループを抜け出すには、If文で確認を行い、Exit Doを使って抜けます。

Do
   繰り返す処理(複数行可能)
Loop

図18:Do … Loopフローチャート

Exit DoはExit Forと同じように、「繰り返し処理を抜けてLoopの後に書いてある処理に進みなさい」ということです。以下でその他のDo文でもExit Doが使用できます。

例題を考えてみましょう。連番と数値の書いてある表があるとします。表の最終にはNoの所に「*」のマークを書いています。「*」マークがある所までの数値の値を2倍にして、「数値X2」の項目に書きこむマクロを考えます。最終行の次に「*」を書いた理由は、もしNoが空白の所があっても、計算を行うためです。通常は空白を見つけて処理を終わりにするマクロが多いと思います。空白で終了したい場合はVBAの「"*"」を「""」に書き替えて確認してください。

図19:Do文の例題の画面

以下はDo … Loopを使った例題です

[リスト8]ReiDo1(Do文While文例題.xlsm)

Sub ReiDo1()
    y = 3
    Do
        If Cells(y, 2) = "*" Then    '(1)
            Exit Do
        End If
        Cells(y, 4) = Cells(y, 3) * 2
        y = y + 1
    Loop
End Sub

まず開始の行数を変数yに設定します。(1)でNoの項目に「*」があればDo文を抜けます。他はC列の値を2倍してD列にセットし、行数を表す変数yをプラス1します。