我在VBA中收到错误“如果没有阻止则结束”问题。 Followin是我的代码。有人可以帮助我找出我所犯的错误吗?
Function ProjectedProductionPlan(Coverage As Double, Sales As Variant, ProjectedStock As Double) As Double
Dim count As Integer
Dim ResidualBalance As Double
Dim ProjectedPlan As Double
Dim k As Integer
Dim x As Integer
Dim y As Single
Dim s As Single
count = Sales.count
s = 0
ResidualBalance = ProjectedStock
i = 1
If Coverage < 1 Then
ProjectedPlan = (Sales(i) * Coverage) - ResidualBalance
ElseIf Coverage = 1 Then
ProjectedPlan = Sales(i) - ResidualBalance
Else
For k = 1 To count
Do Until k - Coverage > 0
x = k
y = Coverage - x
s = Sales(k) + s
Loop
Exit For
End If
ProjectedPlan = s + (Sales(x + 1) * y)
End Function
答案 0 :(得分:2)
根据我的评论:
要摆脱编译错误,您需要将Exit For
更改为Next
以创建实际的迭代,而Exit For
只是内部的 语句 循环以 Exit 循环。 Here是For...Next
循环上的MS文档。
但是,您还可以使用Do Until...Loop
。正如我所看到的那样,修复以上内容将立即将您的代码置于无限循环中,因为没有调整变量(k
和coverage
)。因此,我的建议是在IF
循环中包含一个For...Next
语句。例如这样的
For k = 1 To count
If k - Coverage > 0 Then
Exit For
Else
x = k
y = Coverage - x
s = Sales(k) + s
End If
Next
我没有检查代码的其余部分,以了解是否确实需要实现此功能。
小注: 使用Integer
数据类型变量只会一时咬住你。请改用Long
。