「vba do loop step」
という検索キーワードでアクセスがありました。
For~Next文でキーワードStepを使った増分値指定と同じことを、Do~Loop文で行うには、どのようなコードを書けばいいのかを探していた方による検索です。
VBAのループ処理の関係
書ける条件の汎用性からVBAのループ処理を並べると、
Do~Loop文 > For~Next文 > For Each~Next文
という関係にあります。
Do~Loop文があればどんなループ処理でも書けるはずなのに、複数の書き方が何故あるのかといえば、その方が書きやすく読みやすいからというのが理由の1つです。
Stepキーワードを使ったDo~Loop文ということは、For~Next文でその処理は書けるはずですから、実務上はFor~Next文にするほうが良さそうですが、後学のためにDo~Loop文ではどう書くのかを知りたいというのは、悪くないと感じます。
For~Next文でStepを指定したサンプル
まずはFor~Next文で増分値をStepキーワードを使って指定するコードを確認しましょう。Dim i As Long
For i = 1 To 5 Step 2
MsgBox i
Next i
End Sub
上記のSubプロシージャを実行すると
1・3・5
の順に整数がメッセージボックスに表示されます。
Do~Loop文で増分値を指定するサンプル
以下のようなSubプロシージャで、先ほどと同じ結果となります。Dim i As Long
i = 1
Do While i <= 5
MsgBox i
i = i + 2
Loop
End Sub
For~Next文のStepに該当するのは、
i = i + 2
の行です。
For~Next文ではForの行に、初期値・最終値・増分値が書かれているので、
For i = 1 To 5 Step 2
どうループを回すのかは、この1行を見れば済むのに対し、Do~Loop文では、
初期値
i = 1
最終値
Do While i <= 5
増分値
i = i + 2
が、別の行に書かれるため、どうループを回すのかを理解するには、あちこち見なければならないことを意識してください。
Home » エクセルマクロ・Excel VBAの使い方 » Do~Loop文でStepの指定は?