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