这是我的 VBA 代码:
Sub solver_macro()
SolverOk SetCell:="$H$1", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$2:$E$33", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$F$5", Relation:=2, FormulaText:="$G$5"
SolverAdd CellRef:="$F$9", Relation:=2, FormulaText:="$G$9"
SolverAdd CellRef:="$F$13", Relation:=2, FormulaText:="$G$13"
SolverAdd CellRef:="$F$17", Relation:=2, FormulaText:="$G$17"
SolverAdd CellRef:="$F$21", Relation:=2, FormulaText:="$G$21"
SolverAdd CellRef:="$F$25", Relation:=2, FormulaText:="$G$25"
SolverAdd CellRef:="$F$29", Relation:=2, FormulaText:="$G$29"
SolverAdd CellRef:="$F$33", Relation:=2, FormulaText:="$G$33"
SolverOk SetCell:="$H$1", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$2:$E$33", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$H$1", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$2:$E$33", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
End Sub
我的第一次尝试:
Sub solver_macro()
Dim i As Integer
Dim PERIOD As Integer
PERIOD = 7
SolverOk SetCell:="$H$1", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$2:$E$33", _
Engine:=1, EngineDesc:="GRG Nonlinear"
For i = 0 To PERIOD
SolverAdd CellRef:="$F$5+4*i", Relation:=2, FormulaText:="$G$5+4*i"
Next i
SolverOk SetCell:="$H$1", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$2:$5+4*PERIOD", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$H$1", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$2:$5+4*PERIOD", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
End Sub
你能帮我纠正这个循环吗?提前谢谢您!
编辑:谢谢您的回答。如果我想用字母而不是数字进行循环,我该怎么做?
代码还是一样,但数据是水平的。因此,循环遍历字母(列)而不是数字(行):
SolverAdd CellRef:="$G$88", Relation:=2, FormulaText:="$G$89"
SolverAdd CellRef:="$K$88", Relation:=2, FormulaText:="$K$89"
SolverAdd CellRef:="$O$88", Relation:=2, FormulaText:="$O$89"
SolverAdd CellRef:="$S$88", Relation:=2, FormulaText:="$S$89"
SolverAdd CellRef:="$W$88", Relation:=2, FormulaText:="$W$89"
SolverAdd CellRef:="$AA$88", Relation:=2, FormulaText:="$AA$89"
答案1
这些是我想要向您推荐用于 LOOP 的可能的 VBA 代码。
Dim lStart As Long, lFinish As Long
Dim lCount1 As Long, lCount2 As Long
Dim lIncrement As Long
For lCount1 = lStart To lFinish Step lIncrement
lCount2 = lCount1 / lIncrement
SolverReset
<< Your Code Lines Starts Here >>
SolverSolve UserFinish:=True
Next lCount
希望这对你有帮助。