Excel 为什么我会遇到这个If语句问题?
我在VBA中遇到错误“End If WITH Block If”。Followin是我的代码。有人能帮我找出我犯的错误吗Excel 为什么我会遇到这个If语句问题?,excel,vba,if-statement,Excel,Vba,If Statement,我在VBA中遇到错误“End If WITH Block If”。Followin是我的代码。有人能帮我找出我犯的错误吗 Function ProjectedProductionPlan(Coverage As Double, Sales As Variant, ProjectedStock As Double) As Double Dim count As Integer Dim ResidualBalance As Double Dim ProjectedPlan A
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
Function ProjectedProductionPlan(覆盖率为双倍,销售为变型,ProjectedStock为双倍)为双倍
将计数设置为整数
双精度剩余天平
Dim ProjectedPlan为双精度
将k变为整数
作为整数的Dim x
像单身一样暗淡
她是单身
count=Sales.count
s=0
剩余余额=预计库存
i=1
如果覆盖率<1,则
项目计划=(销售(i)*覆盖范围)-剩余余额
ElseIf覆盖率=1,则
项目计划=销售(i)-剩余余额
其他的
对于k=1进行计数
直到k-覆盖率>0为止
x=k
y=覆盖率-x
s=销售额(k)+s
环
退出
如果结束
ProjectedPlan=s+(销售(x+1)*y)
端函数
根据我的评论:
为了消除编译错误,您需要将Exit For
更改为Next
,以创建一个实际的迭代,而Exit For
只是循环中到Exit循环中的一条语句。MS文档位于上,用于…下一个循环
但是,您也可以使用Do-Until…循环
。正如我看到的代码,修复上面的代码会立即使代码陷入无限循环,因为没有变量(无论是k
还是coverage
)得到调整。因此,我的建议是在For…Next
循环中包含IF
语句。例如:
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
。将Exit For
更改为:Next
以消除编译错误。但我觉得你会陷入一个无休止的循环。您可能需要在For
循环中使用If
语句。当TRUE
时,在For
循环中使用Exit For
,并放弃Do,直到。。。循环
这样做。那么这个问题可以结束了吗@米尔扎