2013-10-10 3 views
0

Я ищу, чтобы вставить ячейки в раздел «bychange» макроса решателя, и я не могу понять, как добавить все ячейки. Я попробовал его с помощью определения диапазона, а затем с помощью range.address, но он не работает, когда я пытаюсь его расширить и использовать больше ячеек (путем определения диапазона) в разделе «Изменение».Вставка условных ячеек в раздел Solver «byChange»

Sub Solver_button() 
' Nominates ranges that will be used in the solver 
Dim C_col As Range 
Dim D_col As Range 
Dim E_col As Range 
Dim F_col As Range 
Dim G_col As Range 
Dim H_col as Range 

On Error Resume Next 
If range("$c$4").Value = "yes" Then C_col = range("$C$7") 
If range("$d$4").Value = "yes" Then D_col = range("$D$7") 
If range("$e$4").Value = "yes" Then E_col = range("$e$7") 
If range("$f$4").Value = "yes" Then F_col = range("$f$7") 
If range("$g$4").Value = "yes" Then G_col = range("$g$7") 
If range("$h$4").Value = "yes" Then H_col = range("$h$7") 

SolverOk SetCell:="$O$9", MaxMinVal:=2, ValueOf:=0, ByChange:=[c_col.address,d_col.address,e_col.address,f_col.address,g_col.address,h_col.address], 
    Engine:=1, EngineDesc:="GRG Nonlinear" 
SolverSolve 

ответ

1

Непроверенные:

Sub Solver_button() 
' Nominates ranges that will be used in the solver 
Dim rngChange As Range, c As Range 

    For Each c In Range("C4:H4").Cells 
     If c.Value = "yes" Then 
      If rngChange Is Nothing Then 
       Set rngChange = c.Offset(3, 0) 
      Else 
       Set rngChange = Application.Union(rngChange, _ 
              c.Offset(3, 0)) 
      End If 
     End If 
    Next c 

    If Not rngChange Is Nothing Then 
     SolverOk SetCell:="$O$9", MaxMinVal:=2, ValueOf:=0, _ 
      ByChange:=rngChange.Address(), Engine:=1, _ 
      EngineDesc:="GRG Nonlinear" 
     'SolverSolve 
    End If 

End Sub 
Смежные вопросы