while wend visual loop for ejemplos ciclo vba vbscript

wend - Salga de un ciclo while en VBS/VBA



while visual basic ejemplos (6)

¿Qué hay de cambiar el bucle while por un bucle while?

y salir usando

Exit Do

¿Hay algún método para salir / interrumpir un while en VBS / VBA?

El siguiente código no funcionará como se esperaba:

num = 0 while (num < 10) if (status = "Fail") then exit while end if num = num+1 wend


Los bucles While de VBScript no son compatibles con la salida anticipada. Use el bucle Do para eso:

num = 0 do while (num < 10) if (status = "Fail") then exit do num = num + 1 loop


Sé que esto es viejo como suciedad, pero se clasificó bastante alto en Google.

El problema con la solución implementada por maddy (en respuesta a rahul) para mantener el uso de un ciclo While ... Wend tiene algunos inconvenientes

En el ejemplo dado

num = 0 While num < 10 If status = "Fail" Then num = 10 End If num = num + 1 Wend

Después del estado = "Fail", el número realmente será igual a 11. El ciclo no finalizó en la condición de falla, sino que finaliza en la siguiente prueba. Todo el código después de la verificación aún se procesa y su contador no es lo que podría haber esperado que fuera.

Ahora, dependiendo de lo que estén haciendo todos ustedes en su ciclo, puede que no importe, pero de nuevo si su código se viera algo más parecido a:

num = 0 While num < 10 If folder = "System32" Then num = 10 End If RecursiveDeleteFunction folder num = num + 1 Wend

El uso de Do While o Do Until permite detener la ejecución del ciclo utilizando Exit Do lugar de usar trucos con su condición de bucle para mantener la sintaxis While ... Wend . Yo recomendaría usar eso en su lugar.


Si bien Loop es una estructura obsoleta, le recomendaría que reemplace "While loop" por "Do While..loop", y podrá usar la cláusula 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}


Una pregunta increíblemente vieja, pero teniendo en cuenta que el OP dijo que no quiere usar Do While y que ninguna de las otras soluciones realmente funciona ... Aquí hay algo que hace exactamente lo mismo que un Exit Loop :

Esto nunca ejecuta nada si el estado ya está en "Fail" ...

While (i < 20 And Not bShouldStop) If (Status = "Fail") Then bShouldStop = True Else i = i + 1 '' '' Do Something '' End If Wend

Mientras que este siempre procesa algo primero (e incrementa la variable de bucle) antes de decidir si debe repetirse o no.

While (i < 20 And Not bShouldStop) i = i + 1 '' '' Do Something '' If (Status = "Fail") Then bShouldStop = True End If Wend

En definitiva, si la variable Status se está modificando dentro del While (y asumiendo que no es necesario que esté fuera del tiempo, realmente no hace ninguna diferencia, pero solo quería presentar múltiples opciones ...


Use Do ... Loop con la palabra clave Until

num=0 Do Until //certain_condition_to_break_loop num=num+1 Loop

Este ciclo continuará ejecutándose, Hasta que la condición se vuelva verdadera

Mientras ... Wend es la sintaxis antigua y no proporciona funciones para romper el ciclo. Prefiere hacer mientras bucles