前回は、For Next 文を使用した繰り返し処理を行いました。今回は、Do Loop 文を使用して同様の処理を行います。
では、さっそく10回の繰り返しに挑戦してみましょう。
ループの回数をカウントするのは前回と同様、変数Xを使用します。
使用される際は、そちらの環境で十分テストのうえ使用してください。
Sub DoTEST() Dim i As Long '変数「i」を長整数型と宣言します。ループカウンターとして使用します。 Dim X As Long '変数「X」を長整数型と宣言します。繰り返しごとに1を加算します。 Do X = X + 1 ← 変数 X に1を足します。 i = i + 1 ← i に1を足します。 Loop Until i = 10 ← i が10になるまで Do まで戻ります。 MsgBox X ← X に代入されている値を表示します。 End Sub
変数Xの初期値は「0」、繰り返すごとに1を加算することを10回繰り返した結果、メッセージボックスに表示される値は、
「10」です。思ったとおりの結果が得られたでしょうか?
他にも、ループを抜ける方法として、Exit Doを使用する方法もあります。
Sub DoTEST1() Dim i As Long '変数「i」を長整数型と宣言します。ループカウンターとして使用します。 Dim X As Long '変数「X」を長整数型と宣言します。繰り返しごとに1を加算します。 Do X = X + 1 i = i + 1 If i = 10 Then ← i が10になったとき Exit Do ← 繰り返し処理を中止し、ループを抜けます。 End If Loop ← Do まで戻ります。 MsgBox X End Sub
永久ループに陥ってしまったときの対処について
Do Loop 文は、必ず Until や Exit Do を設定しておかないと永久に繰り返し処理を行ってしまいます。
もし、VBAを実行した後、永久ループに入っていることがわかった場合、VBAの実行を強制的に停止させる方法があります。
「Ctrl」キーと「Break」キーを同時に押下することで、強制停止します。
以下のコードは永久ループしますので、VBAを実行した後、「Ctrl」キーと「Break」キーを同時に押下して強制停止させてみてください。
Sub DoTEST2() Dim i As Long '変数「i」を長整数型と宣言します。ループカウンターとして使用します。 Dim X As Long '変数「X」を長整数型と宣言します。繰り返しごとに1を加算します。 Do X = X + 1 i = i + 1 Loop MsgBox X End Sub
強制停止すると、以下のメッセージが表示されます。
「終了」を選択すると、コードの実行をそこで停止し、Accessを操作できるようになります。
「デバッグ」を選択すると、強制停止したときに実行しようとしていた箇所が黄色く反転します。
この状態では、一時的に停止している状態ですので、再生ボタンの横にある停止ボタンを押し、コードの実行を停止させます。
コメントをどうぞ!