【发布时间】:2017-02-04 10:52:14
【问题描述】:
我正在尝试编写一个用于二次优化的宏。我的 VBA 技能非常有限,但我手动使用求解器并录制了一个宏,我的代码目前如下所示:
Sub Macro2()
'
' Macro2 Macro
'
'
SolverReset
SolverAdd CellRef:="$C$179:$C$185", Relation:=3, FormulaText:="0"
SolverAdd CellRef:="$C$186", Relation:=2, FormulaText:="1"
SolverOk SetCell:="$C$174", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$179:$C$185" _
, Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End Sub
我要做的是创建一个求解器循环,以便下次单元格引用和目标单元格中的 C 列更改为 D 时,其他所有内容都将保持不变。我想对从 C 到 V 的 20 个相邻列执行此操作。任何帮助将不胜感激!
【问题讨论】:
-
嗨@orkanoid,有点难以破译你想要做什么,所以当你说:“这样下次单元格引用和目标单元格中的 C 列将更改为 D,其他所有内容都将保持不变”您是说您只需要将上面为 B 列工作的代码扩展到 V 列吗?
-
嗨 @TheSilkCode ,我希望这适用于(包括)C 和 V 之间的所有列。所以下一步是:Sub Macro2() ' ' Macro2 Macro ' ' SolverReset SolverAdd CellRef: ="$D$179:$D$185", Relation:=3, FormulaText:="0" SolverAdd CellRef:="$D$186", Relation:=2, FormulaText:="1" SolverOk SetCell:="$D $174", MaxMinVal:=2, ValueOf:=0, ByChange:="$D$179:$D$185" _ , Engine:=1, EngineDesc:="GRG Nonlinear" SolverSolve UserFinish:=True SolverFinish KeepFinal:=1 End Sub,然后是 E 列,依此类推。感谢您的快速回复!
-
我看不出您刚刚输入的内容与原始代码有什么不同,但请看一下下面的示例代码,希望您能足够接近目标线,只需稍作调整即可将其推过
-
我现在就试试你的建议,看看会发生什么,再次感谢!