2016-08-30 55 views
0

我有一個關於使用Do Until循環中的循環的快速問題。如果滿足第二個循環的條件,第一個循環是否會運行第二個循環?在循環中的VBScript循環

例如:

Dim X 
Dim Y 
X = 0 
Y = 0 
' Loop 1 
Do Until X = 20 
    ' Loop 2 
    Do Until Y = 5 
    Y = Y + 1 
    Loop 
X = X + 1 
Loop 

所以,迴路1應該循環20次,每次它循環它應該運行該環5 * 20倍的第二環路時間。它似乎沒有工作。第二個循環似乎只運行一次,其餘時間將被忽略。

How to loop a loop in VBScript?沒有幫助我很多。

+1

您錯過了'Y = 0'來重置外循環的每次迭代的內循環。 – Lankymart

+0

顯然[如何在VBScript中循環循環?](http://stackoverflow.com/questions/28560557/how-to-loop-a-loop-in-vbscript)對你沒有幫助嗎?我只能假設你沒有閱讀或正確地遵循它,這個例子非常全面。請注意對該答案的最終評論*「如果沒有'z = 0',第一個回合之後將不會輸入第二個迴路。」*除了您的變量是'y = 0'而不是'z = 0 '但同樣適用。 – Lankymart

+0

誰關閉了投票 - *「不清楚你問的是什麼」*?真的嗎??,對我來說似乎很清楚!然而它是一個重複的簡單和簡單的。 – Lankymart

回答

1

因爲第一次運行內循環時,它會在Y = 5時退出 - 因爲您不會再次更改Y的值,因爲條件已滿足,所以它不會再運行。

試試這個:

Dim X 
Dim Y 
X = 0 
Y = 0 
' Loop 1 
Do Until X = 20 
    ' Loop 2 
    Do Until Y = 5 
    Y = Y + 1 
    Loop 
    Y = 0 '// reset value of Y so that inner loop will run next time around 
X = X + 1 
Loop 

或使用For...To...循環,而不是:

Dim X,Y 

For X = 1 To 20 
'// Do something... 
    For Y = 1 To 5 
    '// Do something 5 times 
    Next 
Next 

這是因爲Y變量範圍,你聲明並指定其初始值外部的

你可以閱讀更多有關在VBScript變量的作用域在this MSDN article

+0

好的解釋。這只是個人偏好,但我總是在循環之前初始化/重置變量,而不是之後。 – Lankymart

0

Y達到5首次內循環運行,因此下一次輪就已經滿足了until y = 5條件,使循環不會再運行。

在循環之前或循環完成時重置它。

Y = 0 
Do Until Y = 5