首页 > 解决方案 > VBA无法识别工作表激活

问题描述

我正在尝试在 VBA 中使用求解器。我的输入与宏按钮位于不同的工作表中(我无法更改),并且由于某种原因,Excel 2007 可以识别 Sheets("Core").Activate,而 excel 365 则不能。我做错了什么,就像在 excel 365 中一样,它只是忽略了代码的第一行?

Sheets("Core").Activate
SolverAdd CellRef:="$AO$10", Relation:=3, FormulaText:="0"
SolverOk SetCell:="$AZ$8", MaxMinVal:=3, ValueOf:=0, ByChange:="$AO$10", Engine _
    :=1, EngineDesc:="GRG Nonlinear"
SolverSolve (True)

标签: excelvbasolver

解决方案


您可以将实际范围作为参数传递,而不是选择工作表并传递范围地址:

With ThisWorkbook.Worksheets("Core")

    SolverAdd CellRef:=.Range("AO10"), Relation:=3, FormulaText:="0"
    
    SolverOk SetCell:=.Range("AZ8"), MaxMinVal:=3, ValueOf:=0, _
             ByChange:=.Range("AO10"), Engine:=1, EngineDesc:="GRG Nonlinear"
End With
 
SolverSolve True

推荐阅读