是否存在退出/破坏VBS / VBA中的while
的方法?
以下代码无法按预期运行:
num = 0
while (num < 10)
if (status = "Fail") then
exit while
end if
num = num+1
wend
答案 0 :(得分:58)
VBScript的While
循环不支持提前退出。使用Do
循环:
num = 0
do while (num < 10)
if (status = "Fail") then exit do
num = num + 1
loop
答案 1 :(得分:7)
如何将while循环更改为do while循环
并使用
退出Exit Do
答案 2 :(得分:1)
虽然Loop是一个过时的结构,但我建议你更换&#34; while loop&#34; to&#34; Do While..loop&#34;,你可以使用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}
答案 3 :(得分:1)
令人难以置信的老问题,但请记住OP说他不想使用Do While
并且其他解决方案都没有真正起作用......这里有一些完全与Exit Loop
:
如果状态已经处于“失败”状态,则永远不会运行任何内容...
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
,那么它确实没有区别,但只是想提出多种选择......
答案 4 :(得分:0)
我知道这很古老,但它在谷歌中排名很高。
解决方案maddy实现的问题(响应rahul)维持使用While ... Wend循环有一些缺点
在给出的例子中
num = 0
While num < 10
If status = "Fail" Then
num = 10
End If
num = num + 1
Wend
在status =“Fail”之后,num实际上等于11.循环没有在失败条件下结束,它在下一次测试时结束。检查后的所有代码仍然处理完毕,而您的计数器并不是您所期望的那样。
现在取决于你在循环中所做的事情,这可能无关紧要,但如果你的代码看起来更像是:
num = 0
While num < 10
If folder = "System32" Then
num = 10
End If
RecursiveDeleteFunction folder
num = num + 1
Wend
使用Do While
或Do Until
可以使用Exit Do
停止执行循环,而不是使用循环条件的技巧来维护While ... Wend
语法。我建议改用它。
答案 5 :(得分:0)
使用Do ...循环使用Until关键字
num=0
Do Until //certain_condition_to_break_loop
num=num+1
Loop
此循环将继续执行,直到条件变为真
虽然... Wend是旧语法,并没有提供断开循环的功能!喜欢做while while循环