gpt4 book ai didi

excel - 为什么我会收到这个 If 语句问题?

转载 作者:行者123 更新时间:2023-12-04 10:35:58 25 4
gpt4 key购买 nike

我在 VBA 中收到错误“End If without Block If”问题。以下是我的代码。有人可以帮我找出我犯的错误吗?

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

最佳答案

根据我的评论:

要消除编译错误,您需要更改 Exit For进入 Next创建一个实际的迭代,而 Exit For只是一个声明 内循环到 退出循环。 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反而。

关于excel - 为什么我会收到这个 If 语句问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60184339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com