[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/01/15(Sun) 09:13
投稿者名:Hmk
Eメール:
URL :
タイトル:
ループ処理について
はじめまして、質問させてください。

Private Sub Command1_Click()

Do While i < 5
i = i + 6
Loop

MsgBox "ループが終わるまで出ないのか?"
End Sub
上記ループですと、永遠ループになるようですが
その場合、msgboxが実行すると出るのですが、ループが終わらないのに
下のコードまで実行されるのでしょうか?
それとも、コードにループ処理が間違っていますか?

よろしくお願いします

投稿時間:2006/01/15(Sun) 10:53
投稿者名:じゃんぬねっと
Eメール:
URL :http://jeanne.wankuma.com/
タイトル:
Re: ループ処理について
> 上記ループですと、永遠ループになるようですが

絶対になりません。

i の値が 0 だった場合、1 度目のループで 6 になります。
次のループの入り口で 5 未満である条件をクリアしないため、
Do While ブロック内には再入しません。

> その場合、msgboxが実行すると出るのですが、ループが終わらないのに
> 下のコードまで実行されるのでしょうか?

本当に無限ループであればなりません。

> それとも、コードにループ処理が間違っていますか?

はい、間違っています。
何を検証したかったのかが判りませんが、こういうことです。

投稿時間:2006/01/15(Sun) 11:16
投稿者名:Hmk
Eメール:
URL :
タイトル:
Re^2: ループ処理について
> 絶対になりません。
本を読み返して、理解しました。
>
> i の値が 0 だった場合、1 度目のループで 6 になります。
> 次のループの入り口で 5 未満である条件をクリアしないため、
> Do While ブロック内には再入しません。
分かりやすいです。まったくその通りです。
>
> > その場合、msgboxが実行すると出るのですが、ループが終わらないのに
> > 下のコードまで実行されるのでしょうか?
>
> 本当に無限ループであればなりません。
Private Sub Command1_Click()
i = 0

Do While i < 5
i = i + 0
Loop

MsgBox "ループが終わるまで出ないのか?"

End Sub

修正しました。これですと永遠ルールですが実行したら
強制終了になりました。

> 何を検証したかったのかが判りませんが、こういうことです。
Private Sub Command1_Click()でループを続けながらmsgboxを出すのか
ループが終わらない限り、msgboxが出ないのか試したかったのですが
ループを理解できていなかったようです。

補足などあればよろしくお願いします

投稿時間:2006/01/16(Mon) 10:32
投稿者名:ダンボ
URL :
タイトル:
Re^3: ループ処理について
> 修正しました。これですと永遠ルールですが実行したら
> 強制終了になりました。

これは変ですね。「CPU使用率が100%になって他のWindows操作ができづらくなったので強制終了させた」
という話ならば納得できますが、勝手に強制終了したというのならばHmkさんのPCはおかしいです。

投稿時間:2006/01/16(Mon) 11:17
投稿者名:いな
Eメール:
URL :
タイトル:
Re^4: ループ処理について

> これは変ですね。「CPU使用率が100%になって他のWindows操作ができづらくなったので強制終了させた」
> という話ならば納得できますが、勝手に強制終了したというのならばHmkさんのPCはおかしいです。

先の投稿にもあるとおり、検証の手段が非常に怪しいので、
本当にそうな(=勝手に強制終了した)のかを確認して欲しいところですね?

投稿時間:2006/01/16(Mon) 21:10
投稿者名:Hmk
Eメール:
URL :
タイトル:
Re^5: ループ処理について

> > これは変ですね。「CPU使用率が100%になって他のWindows操作ができづらくなったので強制
終了さ
せた」

正解です。誤解がある書き方でした。


> 先の投稿にもあるとおり、検証の手段が非常に怪しいので、

どう言う風に怪しいのでしょうか?

> 本当にそうな(=勝手に強制終了した)のかを確認して欲しいところですね?

上記では(=勝手に強制終了した)ですが、私が書いたのは =(結果)強制終了になりました。=です。
私自身が強制終了させた。を 結果だけをかいつまみました。
書き方に問題があったようです。

投稿時間:2006/01/16(Mon) 23:12
投稿者名:いな
Eメール:
URL :
タイトル:
Re^6: ループ処理について
>どう言う風に怪しいのでしょうか?

他意はありません、
実際動かして確認すれば、分かることなのに
検証自体本当にしているのかを、怪しんだのです。

つまり、机上の空論で、話をしている可能性が大であるということです。

>上記では(=勝手に強制終了した)ですが、私が書いたのは =(結果)強制終了になりました。=です。

上記も、思い込みで掲示するので誤解が生じるのです。

投稿時間:2006/01/16(Mon) 11:15
投稿者名:とも
Eメール:
URL :
タイトル:
Re^3: ループ処理について
無限ループに陥って応答なしの状態になってもIDE環境から実行している場合は
Ctrl+Break で処理を止めることができる場合もあります。