VBA – 求解器macros与相对引用

我需要在工作表中多次使用Excel求解器。 我需要使用求解器的每个场景都具有相同的格式,所以我想用相对引用的macros来让我运行求解器,而不是每次都设置问题。 我有以下代码,但SolverOk函数的ByChange参数给我一个错误。

Sub solverMacro() SolverReset SolverOk SetCell:=ActiveCell.Offset(0, 0), MaxMinVal:=2, ValueOf:=0, ByChange:= _ Range(ActiveCell.Offset(-3, 0), ActiveCell.Offset(-5, 0), ActiveCell.Offset(-7, 0)), _ Engine:=1, EngineDesc:="GRG Nonlinear" SolverAdd CellRef:=ActiveCell.Offset(-7, 0), Relation:=3, FormulaText:="1" SolverAdd CellRef:=ActiveCell.Offset(-7, 0), Relation:=4, FormulaText:="integer" SolverAdd CellRef:=ActiveCell.Offset(-5, 0), Relation:=3, FormulaText:="1" SolverAdd CellRef:=ActiveCell.Offset(-5, 0), Relation:=4, FormulaText:="integer" SolverAdd CellRef:=ActiveCell.Offset(-3, 0), Relation:=3, FormulaText:="1" SolverAdd CellRef:=ActiveCell.Offset(-3, 0), Relation:=4, FormulaText:="integer" SolverAdd CellRef:=ActiveCell.Offset(3, 0), Relation:=3, FormulaText:=ActiveCell.Offset(-9, 0) SolverAdd CellRef:=ActiveCell.Offset(4, 0), Relation:=3, FormulaText:=ActiveCell.Offset(-9, 0) SolverAdd CellRef:=ActiveCell.Offset(5, 0), Relation:=3, FormulaText:=ActiveCell.Offset(-9, 0) SolverAdd CellRef:=ActiveCell.Offset(6, 0), Relation:=3, FormulaText:=ActiveCell.Offset(-9, 0) SolverOk SetCell:=ActiveCell.Offset(0, 0), MaxMinVal:=2, ValueOf:=0, ByChange:= _ Range(ActiveCell.Offset(-3, 0), ActiveCell.Offset(-5, 0), ActiveCell.Offset(-7, 0)), _ Engine:=1, EngineDesc:="GRG Nonlinear" SolverOk SetCell:=ActiveCell.Offset(0, 0), MaxMinVal:=2, ValueOf:=0, ByChange:= _ Range(ActiveCell.Offset(-3, 0), ActiveCell.Offset(-5, 0), ActiveCell.Offset(-7, 0)), _ Engine:=1, EngineDesc:="GRG Nonlinear" SolverSolve End Sub 

我在各种网站上看到很多类似的例子,但是它们都使用绝对引用,至less对于ByChange参数。 有没有一个正确的方法让ByChange参数接受相对引用?

“我想用相对引用的macros来让我运行解算器,而不是每次都设置问题” – 你不需要仅仅为了这个目的使用相对引用。 这个代码是由你logging还是打入?