LoginSignup
12
13

More than 5 years have passed since last update.

VBScriptのfor文でcontinue的なことを実現する

Last updated at Posted at 2019-03-28

前提

ループの中で、ある条件に一致した時に処理をスキップさせたいという場面はよくあると思います。
しかしVBSのforにはcontinueがありません。

なのでこのような書き方になります。

For i = 0 To cnt
    If [処理を通したい条件] Then
        'ここで処理する
    End If
Next

これだと処理内容によってはネストがどんどん深くなっていってしまいます。

疑似continue

そこでdo loopを組み合わせて疑似的にcontinueを実現します。
forの中に一度だけループするdo loopを記述します。

For i = 0 To cnt
    Do
        If [処理をスキップしたい条件] Then Exit Do

        'ここで処理する
    Loop Until 1
Next

でもそのままだとネストの深さは解決しないので、下記のようにforとdo loopを一行で書きます。

For i = 0 To cnt : Do
    If [処理をスキップしたい条件] Then Exit Do

    'ここで処理する
Loop Until 1 : Next

これで無事?メイン処理のネストを一段浅くすることができました。
パッと見は違和感がありますが、見慣れれば重要な処理のネストが深くなるよりはいいかなと思います。

参考

[VBScript] ループ制御コマンド「Continue」っぽいものを美しく実装する > Z_ ̄∂
https://yozda.exblog.jp/9314000/

12
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13