为什么会出现此If语句问题?

时间:2020-02-12 08:47:04

标签: excel vba if-statement

我在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

1 个答案:

答案 0 :(得分:2)

根据我的评论:

要摆脱编译错误,您需要将Exit For更改为Next以创建实际的迭代,而Exit For只是内部的 语句 循环以 Exit 循环。 HereFor...Next循环上的MS文档。

但是,您还可以使用Do Until...Loop。正如我所看到的那样,修复以上内容将立即将您的代码置于无限循环中,因为没有调整变量(kcoverage)。因此,我的建议是在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