Excel 如何在VBA中使用循环缩短我的单元格引用代码的长度?

Excel 如何在VBA中使用循环缩短我的单元格引用代码的长度?,excel,for-loop,excel-2010,vba,Excel,For Loop,Excel 2010,Vba,以下是关于非线性解算器的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 Cell

以下是关于非线性解算器的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
我试图在上面的代码中包含一个for循环。我的第一次尝试:

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
你能帮我纠正这个循环吗?提前谢谢你

编辑:谢谢你的回答。如果我想用字母而不是数字循环,我该怎么做呢

代码仍然相同,但数据是水平的。因此,循环通过字母(列)而不是数字(行):

我会让它更简单:

  For i = 5 To 33 Step 4
     SolverAdd CellRef:="$F$" & i, Relation:=2, FormulaText:="$G$" & i
  Next i
我会让它更简单:

  For i = 5 To 33 Step 4
     SolverAdd CellRef:="$F$" & i, Relation:=2, FormulaText:="$G$" & i
  Next i

你需要在引号之外进行计算,例如

SolverAdd CellRef:="$F$" & 5+4*i, Relation:=2, FormulaText:="$G$" & 5+4*i

你需要在引号之外进行计算,例如

SolverAdd CellRef:="$F$" & 5+4*i, Relation:=2, FormulaText:="$G$" & 5+4*i