1
我的循環似乎過早退出。基本上,我想要以下條件:在VBA中過早退出循環
如果fc-WC(j-1)+ WCinit + RefEF * dz小於Precip * dz,WC(j-1)+ WCinit * dz比pwp 更重
然後徑流和滲濾等於雨-FC(WC + WCinit)+ REFET * DZ * 0.5 和WJ(J)= FC
別的 徑流和滲濾= 0 和WC(J)= WC(j-1)+ WCinit + precipit-RefET * dz
但是如果WC(j-1)+ WCinit(i)< = pwp 然後首席WC(j)的= PWP
我想整個循環結束時,i和j = 12
環路似乎結束當j = 2
Dim fc As Double
fc = Cells(4, 7).Value
NumMonth = 12
i = 1
j = 2
Dim pwp As Double
pwp = Cells(4, 8).Value
Dim dz As Double
dz = 0.5 'm
While (WC(j - 1) + WCinit(i) * dz > pwp * dz) And (j <= NumMonth)
If (fc - (WC(j - 1) + WCinit(i)) + RefET(i) * dz) < (Precip(i) * dz) Then
Runoff(i) = (Precip(i) - fc - (WC(j - 1) + WCinit(i)) + RefET(i) * dz) * 0.5
Percolation(i) = (Precip(i) - fc - (WC(j - 1) + WCinit(i)) + RefET(i) * dz) * 0.5
WC(j) = fc
Else
Runoff(i) = 0
Percolation(i) = 0
WC(j) = WC(j - 1) + WCinit(i) + Precip(i) - RefET(i) * dz
End If
j = j + 1
i = i + 1
Wend
If WC(j - 1) + WCinit(i) <= pwp Then
Runoff(i) = 0
Percolation(i) = 0
WC(j) = pwp
End If
如果在Wend後面j = 2,那麼在你開始之前你永遠不會進入While循環,因爲j = 2。由於'j <= NumMonth'在循環開始時顯然是真的,所以在第一次遇到時,另一個While條件 - WC(j-1)+ WCinit(i)* dz> pwp * dz'是錯誤的,所以你永遠不會進入循環。你應該使用F8來檢查你的代碼。 – 2013-02-23 16:22:04
此外,我沒有看到你的數組(或變體)變量'WC'和'WCinit'是在哪裏聲明或初始化的。他們不是嗎? – 2013-02-23 16:29:15
你有什麼建議如何解決這個問題?切換循環的順序?我一直在通過我的代碼,我明白這是發生,但是,我是新來的VBA,不知道從哪裏走。 – user1977802 2013-02-23 16:31:04