Home » エクセルマクロ・Excel VBAの使い方 » Do~Loop文でStepの指定は?

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン1911 ビルド12228.20364 Microsoft Store)

「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キーワードを使って指定するコードを確認しましょう。
Sub sample_For_Next文()
 Dim i As Long
 For i = 1 To 5 Step 2
  MsgBox i
 Next i
End Sub

上記のSubプロシージャを実行すると
 1・3・5
の順に整数がメッセージボックスに表示されます。

Do~Loop文で増分値を指定するサンプル

以下のようなSubプロシージャで、先ほどと同じ結果となります。
Sub sample_Do_Loop文()
 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の指定は?

「エクセルマクロ・Excel VBAの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.