VBS/VBAでwhile
を終了/中断する方法はありますか?VBS/VBAでwhileループを終了
次のコードが意図したとおりに動作しません:
はnum = 0
while (num < 10)
if (status = "Fail") then
exit while
end if
num = num+1
wend
VBS/VBAでwhile
を終了/中断する方法はありますか?VBS/VBAでwhileループを終了
次のコードが意図したとおりに動作しません:
はnum = 0
while (num < 10)
if (status = "Fail") then
exit while
end if
num = num+1
wend
ループ
と出口が
Exit Do
whileループを行うwhileループを変更すると、コードがさらに複雑になります。vbscriptsを使用してwhileループを終了したい場合は、 whileループをループの一致しない条件に設定します。例: while(num <10) if(status = "Fail")then num = 10'hereここでは、lopが失敗したときの状態を設定します。 end –
VBScriptのWhile
を使用しながら行うには、whileループの変更についてドンループ何早期終了をサポートします。そのためDo
ループを使用します
num = 0
do while (num < 10)
if (status = "Fail") then exit do
num = num + 1
loop
を私は、これは汚れのように古いです知っているが、それはグーグルでかなり上位にランクイン。
一方の使用を維持する(ラーフルに応答して)溶液マディ実装に伴う問題...とWENDループは=ステータス後
num = 0
While num < 10
If status = "Fail" Then
num = 10
End If
num = num + 1
Wend
を与えられた例では、いくつかの欠点
を有します"Fail" numは実際には11になります。ループは失敗条件で終了せず、次のテストで終了します。チェックの後のすべてのコードはまだ処理されており、カウンターはあなたが期待していたものではありません。
Do While
または
Do Until
あなたがループの実行を停止することができますを使用し
num = 0
While num < 10
If folder = "System32" Then
num = 10
End If
RecursiveDeleteFunction folder
num = num + 1
Wend
:今、あなたのコードは、より多くのようなものを見た場合、それが再び問題では、ないかもしれませんが、何を、すべてのループでやっているに応じて、
ループ条件でトリッキーを使用してWhile ... Wend
の構文を維持する代わりにExit Do
を使用してください。私は代わりにそれを使用することをお勧めします。
*何が3文字追加されますか? – cogumel0
ああ、5年前のこと。私は誰かが何かを編集したに違いないと思う。私は思っている間に文字を保存することについてのコメントがありました。 – JoshHetland
しかし、これらの質問の目的を念頭に置くと、答えを含めて後世のために保管されています。 。 – cogumel0
ループは廃止された構造ですが、「Whileループ」を「Do While..loop」に置き換え、Exit句を使用することをお勧めします。
check = 0
Do while not rs.EOF
if rs("reg_code") = rcode then
check = 1
Response.Write ("Found")
Exit do
else
rs.MoveNext
end if
Loop
if check = 0 then
Response.Write "Not Found"
end if}
whileループは「廃止」とはみなされません。少なくとも、VBScriptはそれ以上ではありません。 – Conrad
使用しています...ループキーワードまで
num=0
Do Until //certain_condition_to_break_loop
num=num+1
Loop
でこのループを実行していきます、まで条件が真
ながらになり... Wendのは、古い構文ですブレークループに機能を提供していません!ループ
コメントを条件に置き換えてください – codemaster
信じられないほど古い質問しながら行うことを好むが、ここでは... OPは、彼がDo While
および他のソリューションのどれも実際に動作しないことを利用したくないと述べたことを念頭にすることとまったく同じを行い何かExit Loop
:
ステータスが「失敗」にすでにある場合は、この1は常に最初に何かを処理(およびループ変数をインクリメント)に対しこれは、一度それが必要かどうかのループを決定する前に...
While (i < 20 And Not bShouldStop)
If (Status = "Fail") Then
bShouldStop = True
Else
i = i + 1
'
' Do Something
'
End If
Wend
を何も実行されることはありませんもっとかどうか
While (i < 20 And Not bShouldStop)
i = i + 1
'
' Do Something
'
If (Status = "Fail") Then
bShouldStop = True
End If
Wend
変数Status
がWhile
内で変更された(そして、あなたがしばらく外i
を必要としないと仮定されている場合、最終的に、それは本当に違いはありませんが、ちょうど複数のオプションを提示したかった...
どちらの例でも、現在のループの反復は、「失敗」に設定されている場合、最後まで続きます。これは、ループの実行が直ちに停止し、制御が外側の論理ブロックに戻されるExitステートメントと同じように機能しません。 – JoshHetland
'bShouldStop'が' True'に設定された後、 'End If'にジャンプし、条件を評価するために戻り、最後に' Wend'に行きますので、 Exit Loop'は一番下の 'Loop'にまっすぐに行きます。確かに、私はあなたにそれをあげます。しかし今、私にあなたにこれを尋ねさせます:これは**スクリプト**ですか、あるいはそれぞれのジャンプが関係するアセンブリアプリケーションですか?最終結果は**まったく同じ**です。変数は変更されません。実行されるべきでないコードは実行されず、Status = Failのときに停止します。しかし、しばらくお待ちください... – cogumel0
どのようなエラーが表示されますか? –