Excel VBA で プログラムの基礎を学ぶ!?
・While…Wend ステートメント
繰り返しは色々あるのですが、このステートメントは正直言って、あまり使いませんw
なので、使い方は、どこぞのサンプルをほぼほぼそのまんま載せますw(怒られる?)
Sub FuncWhileWend() Dim Counter Counter = 0 While Counter < 5 Counter = Counter + 1 Debug.Print Counter Wend Debug.Print Counter End Sub
Counterが5未満の間、+1の処理を繰り返すので、実行結果は・・ご想像にお任せしますw
必ず指定回数を繰り返すので、途中で抜けるには強制的に「Exit Sub」とかすることになるので、あまりよろしくないです
サンプルも悪いので、回数がわかっているなら、ForNextステートメントでいいですし、カウンターが必要ならなおさらForNextステートメントでしょ!?
って、なってしまいますが、もう少し複雑な条件の間に処理を行わせるとか、もしくは複雑な条件でカウントアップするような場合には、使えるんでしょうけどね・・
きっと次に紹介するステートメントで、より柔軟にできちゃうんですw
・Do…Loop ステートメント
条件を満たすまで、処理を繰り返すことができますし、1つのステートメントですが、条件の設定が「Do」の後と「Loop」の後の2か所で設定できるので、構文が2つあるのです!
Sub FuncDoLoop() Dim idx As Integer idx = 0 Debug.Print "①" Do While (idx < 3) idx = idx + 1 Debug.Print "idx = " & idx Loop Debug.Print "②" Do idx = idx + 1 Debug.Print "idx = " & idx Loop While (idx < 6) Debug.Print "③" Do idx = idx + 1 Debug.Print "idx = " & idx Loop Until (idx >= 9) Debug.Print "④" Do Until (idx >= 12) idx = idx + 1 Debug.Print "idx = " & idx Loop Debug.Print "⑤" Do While (idx < 12) idx = idx + 1 Debug.Print "idx = " & idx Loop Debug.Print "⑥" Do idx = idx + 1 Debug.Print "idx = " & idx Loop While (idx < 12) Debug.Print "⑦" Do If idx > 15 Then Exit Do idx = idx + 1 Debug.Print "idx = " & idx Loop While (idx > 12) End Sub
長くなってしまいましたw
構文的には、これと・・
Do [{ While | Until } condition ]
[ statements ]
[ Exit Do ]
[ statements ]
Loop
これ・・・
Do
[ statements ]
[ Exit Do ]
[ statements ]
Loop [{ While | Until } condition ]
ちなみに、上のサンプルの結果はこうなりますが、やりたいことが伝わりますかね?w
①
idx = 1
idx = 2
idx = 3
②
idx = 4
idx = 5
idx = 6
③
idx = 7
idx = 8
idx = 9
④
idx = 10
idx = 11
idx = 12
⑤
⑥
idx = 13
⑦
idx = 14
idx = 15
idx = 16
「Do」か「Loop」のどちらに条件を書くかによって、当然ですが処理が異なり、①~④は単純に構文のパターンを網羅しただけです
- ①:idxが3未満の間、繰り返す
- ②:idxが6未満の間、繰り返す
- ③:idxが9以上になるまで、繰り返す
- ④:idxが12以上になるまで、繰り返す
⑤~⑥は同じ条件式でも評価されるタイミングが異なるため、ステートメントが実行されるかどうかが異なることを示しています
- ⑤:idxが12なので、ステートメント実行前に評価され、実行されない
- ⑥:idxが12ですが、ステートメント実行後に評価され、実行される
⑦は「Exit Do」で任意にステートメントを終了する(抜ける)ことができることを示しています