
Excel VBA 编程规划求解
想用VBA循环求解,有很多行,每行规划求解一次,所以用循环语句调用excel的规划求解,但是试了很多次,无论如何也不能够让他向下求解,只能够把第一行的求解,接下来i的值在...
想用VBA循环求解,有很多行,每行规划求解一次,所以用循环语句调用excel的规划求解,但是试了很多次,无论如何也不能够让他向下求解,只能够把第一行的求解,接下来i的值在循环变大,但是下面的几行都没有做规划求解~
实在不知道怎么回事,求高手知道!!
Sub Macro1()
'
' Macro1 Macro
'
'
For i = 8 To 15
SolverOk SetCell:="Cells(i, 48)", MaxMinVal:=2, ValueOf:=0.001, ByChange:= _
Range(Cells(i, 17), Cells(i, 25)), Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve UserFinish:=True
Next
End Sub 展开
实在不知道怎么回事,求高手知道!!
Sub Macro1()
'
' Macro1 Macro
'
'
For i = 8 To 15
SolverOk SetCell:="Cells(i, 48)", MaxMinVal:=2, ValueOf:=0.001, ByChange:= _
Range(Cells(i, 17), Cells(i, 25)), Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve UserFinish:=True
Next
End Sub 展开
1个回答
展开全部
Sub tt()
Dim i As Integer
For i = 3 To 100
SolverReset
SolverOk SetCell:="$L$" & i, MaxMinVal:=3, ValueOf:="0", byChange:="$G$" & i & ":$J$" & i
SolverAdd CellRef:="$G$" & i & ":$J$" & i, Relation:=4, formulaText:="整数"
SolverAdd CellRef:="$G$" & i & ":$J$" & i, Relation:=1, formulaText:="10"
SolverAdd CellRef:="$G$" & i & ":$J$" & i, Relation:=3, formulaText:="0"
SolverOk SetCell:="$L$" & i, MaxMinVal:=3, ValueOf:="0", byChange:="$G$" & i & ":$J$" & i
SolverSolve Userfinish = False
Next i
End Sub
上面这段是我以前做的规划代码你比较一下
你前面好像 SolverReset 没有重置
还有最后SolverSolve Userfinish = False 我用的时候是用的FALSE 就是最后规划的时候那个提示我是过滤掉的
还有 在VBA界面要把工具 引用 SOLVER勾上
最后你录制的代码中可能有错误的 VBA录制规划求解的时候 有的代码是错的
上面的ByChange 你自己改过来了其他要还有报错 你再改下看看
我搞了半天没搞请你代码 你把问题描述一下
G21-YANG@163.COM 我给你录代码吧
我测试了一下 加上SolverReset是可以的 就是最后面的
Engine:=1, EngineDesc:="GRG Nonlinear"
我这里没这参数 你用的EXCEL 07么 我这里提示找不到参数删除这段我就可以运行了
Dim i As Integer
For i = 3 To 100
SolverReset
SolverOk SetCell:="$L$" & i, MaxMinVal:=3, ValueOf:="0", byChange:="$G$" & i & ":$J$" & i
SolverAdd CellRef:="$G$" & i & ":$J$" & i, Relation:=4, formulaText:="整数"
SolverAdd CellRef:="$G$" & i & ":$J$" & i, Relation:=1, formulaText:="10"
SolverAdd CellRef:="$G$" & i & ":$J$" & i, Relation:=3, formulaText:="0"
SolverOk SetCell:="$L$" & i, MaxMinVal:=3, ValueOf:="0", byChange:="$G$" & i & ":$J$" & i
SolverSolve Userfinish = False
Next i
End Sub
上面这段是我以前做的规划代码你比较一下
你前面好像 SolverReset 没有重置
还有最后SolverSolve Userfinish = False 我用的时候是用的FALSE 就是最后规划的时候那个提示我是过滤掉的
还有 在VBA界面要把工具 引用 SOLVER勾上
最后你录制的代码中可能有错误的 VBA录制规划求解的时候 有的代码是错的
上面的ByChange 你自己改过来了其他要还有报错 你再改下看看
我搞了半天没搞请你代码 你把问题描述一下
G21-YANG@163.COM 我给你录代码吧
我测试了一下 加上SolverReset是可以的 就是最后面的
Engine:=1, EngineDesc:="GRG Nonlinear"
我这里没这参数 你用的EXCEL 07么 我这里提示找不到参数删除这段我就可以运行了
追问
你好,根据你的程序,我把我程序段中所有的Cells(i, 48)的引用语句换成了你程序中的"$G$" & i & ":$J$" & i语句~就正常了~
我之前的主要问题是在循环中,i的数值虽然在变大,我的目标是每行对应的单元格优化求解一次(变化最小化AVi,变化区域是(Qi:Yi)),但是只能优化求解第一行,似乎用Cells这个函数的引用有点问题,不知道为什么,您能再解释一下么?多谢!
追答
不是的 每个规划求解设置不一样的
可能是你用range的原因吧 我也是VBA菜鸟 呵呵
你能把你表发来么 光看代码烟花 我看你的表 告诉你吧 ~不是03的就算了 我电脑上03的
对了 你有没吧SolverReset 重置规划求解 +上去啊
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询