求助vba下标越界

来源:百度知道 编辑:UC知道 时间:2024/06/04 08:55:27
For i = 3 To 368
WU(i) = Cells(i, 10)
WL(i) = Cells(i, 11)
WD(i) = Cells(i, 12)
W(i) = Cells(i, 13)
P(i) = Cells(i, 2)
Ep(i) = Cells(i, 4)
If WU(i - 1) + P(i) >= Ep(i) Then
Cells(i, 5) = Ep(i)
Cells(i, 6) = 0
Cells(i, 7) = 0
Cells(i, 10) = WU(i) = WU(i - 1) + P(i) - Ep(i)
Cells(i, 11) = WL(i - 1) = WL(i)
Cells(i, 12) = WD(i - 1) = WD(i)
End If
Next i
E(i) = EU(i) + EL(i) + ED(i)
PE(i) = P(i) - E(i)
End Sub

这段代码出来下标越界,什么问题?

Cells(i, 10) = WU(i) = WU(i - 1) + P(i) - Ep(i)
Cells(i, 11) = WL(i - 1) = WL(i)
Cells(i, 12) = WD(i - 1) = WD(i)

每行怎么有两个等号?

另外,要格外注意for循环之后,对数组的调用,因为这时i已经是i=369了
比如
E(i) = EU(i) + EL(i) + ED(i)
PE(i) = P(i) - E(i)
它们的下标最大值如果是368,就肯定出错

上面说的很对,next i后 i 会加1,然后去跟 【For i = 3 To 368】中的368 比较,看是否i大于368,如果不大于,则继续执行for循环里的代码;如果大于,则会执行next i 的下一句。

所以当执行完最后一次fro循环里的代码后i是368,然后又执行了一次next i ,这时i=369,然后跟368比较,比较的结果是跳出for循环,执行E(i) = EU(i) + EL(i) + ED(i)