求解器VBA ActiveCell“卡住”

时间:2017-05-25 03:23:53

标签: excel vba solver

我正在尝试使用宏来调用Solver。目标是选择将成为“ByChange:”单元格的Target单元格(ActiveCell)。 SetCell是下一列的单元格,应该= 0。 当我想通过选择下一个要运行宏的单元来更改activecell时,它应该对其进行评估。但是,看起来原始的activecell目标在第一次运行后被保存在内存中。

有没有办法清除activecell的内存,以便新选择的Target单元注册为activecell?

Sub Solver()
    Dim Target As Double
    Dim zero As Double
    Target = ActiveCell.Value
    zero = Cells(ActiveCell.Row, ActiveCell.Column + 1).Value

    SolverOk SetCell:=zero, MaxMinVal:=3, ValueOf:=0, ByChange:=Target, Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverSolve UserFinish:=True
End Sub

1 个答案:

答案 0 :(得分:1)

我相信你正在努力

Sub Solver()
    SolverOk SetCell:=ActiveCell.Offset(0, 1), _
             MaxMinVal:=3, _
             ValueOf:=0, _
             ByChange:=ActiveCell, _
             Engine:=1, _
             EngineDesc:="GRG Nonlinear"
    SolverSolve UserFinish:=True
End Sub

即。通过更改ActiveCell中的值,将单元格中的一列添加到ActiveCell的右侧,使其值为零。