こんにちは、Ryoです。
ループ処理はDo Loopステートメントで行い、多くの場合は指定条件に合致することで処理を終了することが多いかと思いますが、終了条件を満たさない限りループ処理し続けたいこともあろうかと思いますので、今回はその内容について書いていきます。
1.サンプル概要
例として東京都の英語表記を問うインプットボックスを表示し、正しい表記が入力されるまで繰り返される処理を行っています。
実行すると入力画面が表示されます。
Tokyo と入力しOKをクリックしますが、これは正しくないのでエラーメッセージが表示されます。
正しい表記が入力されるまで無限ループ処理としているので、延々と繰り返されることになります。ここで正解のTokyo Metropolisと入力すると正解のメッセージが表示されてループ処理が終了します。
2.サンプルコード
Sub Sample1() Dim tmp As String Do '質問するダイアログボックスの表示 tmp = Application.InputBox("東京都の英語表記は?") '条件判定 If tmp <> "Tokyo Metropolis" Then MsgBox "表記が正しくありません", vbCritical Else MsgBox "正解!", vbInformation '入力された内容が正しければループ処理を抜ける Exit Do End If '正しい内容が入力されるまでループ処理が無限に繰り返される Loop End Sub
ループ処理はDo Loopステートメント、ループ処理から抜け出すにはExitステートメントを利用します。
構文:
Do[{While| Until} condition]
[statements]
[Exit Do]
[statements]
Loop[{While | Until} comdition]
このような無限ループ処理は基本的に「このようにならないこと」とされることが一般的ですが、IfステートメントやExit Doステートメントと合わせて使用することで無限ループに柔軟性が生まれてきます。
3.まとめ
ループ処理は条件を満たすまで処理を実行したり、指定回数処理したりする方法が一般的で且つ確実ではありますが、うまく活用すれば無限ループが逆に柔軟にもなります。
抜ける処理の記述や条件などに注意しつつ、機会があればご活用くださいませ。
以上、無限ループの使用と抜け出し処理などについてでした!今回の記事が何かの参考になれば幸いです。
Ryo