在VBS / VBA中退出while循环

时间:2009-08-13 13:28:29

标签: vba vbscript

是否存在退出/破坏VBS / VBA中的while的方法?

以下代码无法按预期运行:

num = 0
while (num < 10)

    if (status = "Fail") then
        exit while
    end if

    num = num+1
wend

6 个答案:

答案 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 WhileDo 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循环