★Do...Loop ステートメント その4
 

次に
4.この処理を行って、条件を満たすまでは続けなさい。
の場合の記述では

Sub doloop4()

 ' i は整数型として変数宣言します。


 Dim i As Integer

 ’i の初期設定として1を代入しておきます。
 i = 1


 Do
 ’「女」と入力されたセルになるまでセルの色を赤に変更します。
 Cells(i, 1).Interior.ColorIndex = 3

 ’次々とセルを下に移動させる為に1回処理を行う度に
 ’変数 i に1を足していきます。これで行数は1ずつ増えますね。

 i = i + 1

 ’A列のセルが「女」と入力されたセルになるまで、上の処理を行います。

 Loop Until Cells(i, 1) = "女"

End Sub



 これも結果は今までと同じになりましたね。
では次は、Untilを先に書く場合と後に書く場合で生じる違いについて試してみましょう。

今回は、A1に「女」と入力して2つのコードを実行してみましょうね。
1.Do Untilの場合 2.Loop Whileの場合
変化なし A列が真っ赤に

どうですか。Loop Untilの場合は無限ループになってしまいました。
EscキーかCtrl+Breakキーで強制終了できますよ。

1.Do Untilは、いきなり処理条件を満たしたので、処理はしませんでした。
2.Loop Unitlは、まず先に処理を行いますので、

最初に提示している  「i = 1」

から始まり、すぐに
               「i = i + 1」 で「i =2」

になってしまっているので、セルの検索が2行目から始まってしまうのですね。
だから2行目以降を検索してしまい、無限ループにはまってしまったのですね。

これも発生するので、プログラミングの時は気をつけましょうね。
では次は、ある条件下では無限ループになるような時の回避方法を紹介します。

[トップ][前へ][ステートメント][次へ]