Vba 找不到名称参数

Vba 找不到名称参数,vba,excel,solver,Vba,Excel,Solver,当我运行下面的代码时,SetCell:=“$I$3”出现错误“Name-argument not found” 次简单指数平滑() 作为整数的Dim x 将最后一行设置为整数 Application.ScreenUpdating=False 表(“COV_0.2”).单元格(1,49)。Value=“MAD” 表(“COV_0.2”)。单元格(1,50)。Value=“Alpha” lastrow=板材(“COV_0.2”)。单元格(Rows.Count,2)。结束(xlUp)。行 对于x=2到

当我运行下面的代码时,
SetCell:=“$I$3”
出现错误“
Name-argument not found

次简单指数平滑()
作为整数的Dim x
将最后一行设置为整数
Application.ScreenUpdating=False
表(“COV_0.2”).单元格(1,49)。Value=“MAD”
表(“COV_0.2”)。单元格(1,50)。Value=“Alpha”
lastrow=板材(“COV_0.2”)。单元格(Rows.Count,2)。结束(xlUp)。行
对于x=2到最后一行
如果表(“COV_0.2”)。单元格(x,31)。值为“S4”,则
范围(“G”&x&“:AD”&x)。选择
选择,复制
表格(“分析常数”)。选择
范围(“C4”)。选择
Selection.Paste特殊粘贴:=xlPasteAll,操作:=xlNone_
SkipBlanks:=假,转置:=真
运行“Solver.xlam!SolverReset”
“***下一行出现错误:`Name参数未找到`
运行“Solver.xlam!SolverOk”,SetCell:=“$I$3”_
MaxMinVal:=2,ValueOf:=0,ByChange:=“$G$1”,引擎:=3_
EngineDesc:=“进化型”
Application.Run“Solver.xlam!SolverAdd”,CellRef:=“$G$1”_
关系:=1,公式文本:=“0.9”
Application.Run“Solver.xlam!SolverAdd”,CellRef:=“$G$1”_
关系:=3,公式文本:=“0.1”
解算器解算真

必须在工具/参考中设置对解算器加载项的参考:

  • 从Excel VBA编辑器窗口的“工具”菜单中选择“参照”
  • 选中“解算器”复选框
  • 单击“确定”
  • 然后正确的解算器语法是:

    SolverReset
    
    SolverOk SetCell:="$I$3", _
        MaxMinVal:=2, ValueOf:=0, ByChange:="$G$1", Engine:=3, _
        EngineDesc:="Evolutionary"
    
    SolverAdd CellRef:="$G$1", Relation:=1, FormulaText:="0.9"
    SolverAdd CellRef:="$G$1", Relation:=3, FormulaText:="0.1"
    SolverSolve True
    

    • 此外,我建议不要使用
      Integer
      进行行计数,因为Excel的行数超出了
      Integer
      所能处理的范围。建议在VBA中使用

    • 您可能希望进一步研究如何使代码更可靠、更短、更稳定和更快


    错误发生在哪一行?尝试按顺序使用参数运行,但不使用arg描述符。可能没有名为:
    Solver.xlam的文件!SolverOk
    Solver.xlam!SolverAdd
    或使用宏记录以检查语法。您还应该在tools>References中检查对Solver的引用以展开@QHarr的注释:您不能通过
    应用程序传递命名参数。运行
    -您只能通过位置传递。
    
    SolverReset
    
    SolverOk SetCell:="$I$3", _
        MaxMinVal:=2, ValueOf:=0, ByChange:="$G$1", Engine:=3, _
        EngineDesc:="Evolutionary"
    
    SolverAdd CellRef:="$G$1", Relation:=1, FormulaText:="0.9"
    SolverAdd CellRef:="$G$1", Relation:=3, FormulaText:="0.1"
    SolverSolve True