Как кодировать макрос нескольких решателей в VBA? - PullRequest
0 голосов
/ 20 сентября 2019

Я надеюсь, что вы можете помочь мне с этим.Я пытаюсь запустить несколько решателей в разных столбцах и одной и той же строке листа.

Сначала я добавлю несколько операторов If, чтобы определить диапазон ячеек, которые должен изменить решатель, чтобы получить ожидаемое значение.

Предполагается, что решатель должен изменить значения в строках 320: 322 столбца "c", чтобы получить значение в столбце 343 строки "c", равное значению строки 317 столбца "c".С учетом 6 ограничений.

У меня проблема в том, что с этим кодом ничего не происходит, нет ошибок, нет значений, нет ничего.Я надеюсь, что вы можете мне помочь.

Sub MultipleSolver()
    Dim c As Integer
    ActiveWorkbook.ActiveSheet.Activate

    For c = 6 To 39    
        If Cells(320, c) = 0 Then GoTo continue    
            If Cells(320, c) = 1 Then
                If Cells(321, c) = 1 Then
                    If Cells(322, c) = 1 Then    
                        MyRange = Range(Cells(339, c), Cells(341, c))    
                    ElseIf Cells(320, c) = 1 Then
                        If Cells(321, c) = 1 Then
                            If Cells(322, c) = 0 Then    
                                MyRange = Range(Cells(339, c), Cells(340, c))    
                            Else    
                                MyRange = Range(Cells(339, c), Cells(339, c))    
                            End If
                        End If
                    End If
                End If
            End If

        SolverReset
        SolverOK SetCell:=Cells(343, c), ValueOf:=Cells(317, c), ByChange:=MyRange

    SOlverAdd CellRef:=Cells(339, c), Relation:=3, FormulaText:=0
    SOlverAdd CellRef:=Cells(340, c), Relation:=3, FormulaText:=0
    SOlverAdd CellRef:=Cells(341, c), Relation:=3, FormulaText:=0

    SOlverAdd CellRef:=Cells(339, c), Relation:=1, FormulaText:=Cells(324, c)
    SOlverAdd CellRef:=Cells(340, c), Relation:=1, FormulaText:=Cells(325, c)
    SOlverAdd CellRef:=Cells(341, c), Relation:=1, FormulaText:=Cells(326, c)
    SolverSolve True

    continue:
    Next c

End Sub
...