none
Loop para adicionar controles - SOLVER - é possível? RRS feed

  • Pergunta

  • Estou utilizando o SOLVER e Formulário para realizar uma tarefa..

    Acontece que para definir as restrições precisarei de um Loop que preencherá as varias restrições para o solver... 
    É possível ter esse controle?

    Tentei o seguinte, mas sem sucesso:

    Dim h As Integer  'Número de restrições
            Dim w As Integer  'Referência para o Loop
            Dim q As String   'Referência para localizar célula que deve ser lida
            
                h = Plan1.Range("T8") - 1
            
                q = 7 + Range("E2")
            
                For w = 1 To h
                    SolverAdd CellRef:="$I$" & q, Relation:="$I$" & q + 1, FormulaText:="$I$" & q + 2
                    q = q + 5 + Range("E2")
                Next w

    O problema é o SolverAdd diz que são tipos incompatíveis..
    Alguma dica? Ou outra maneira para fazer varias restrições? 
    terça-feira, 2 de outubro de 2012 04:40

Todas as Respostas

  • Sub Exemplo()
        Dim h As Integer  'Número de restrições
        Dim w As Integer  'Referência para o Loop
        Dim q As String   'Referência para localizar célula que deve ser lida
    
        h = Plan1.Range("T8") - 1
    
        q = 7 + Range("E2")
    
        For w = 1 To h
            SolverAdd CellRef:="$I$" & q _
            , Relation:=Range("I" & q + 1) _
            , FormulaText:=Range("I" & q + 2)
            q = q + 5 + Range("E2")
        Next w
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 2 de outubro de 2012 22:34
    Moderador
  • valeu Benzadeus, mas consegui resolver por outro forum: 

    http://www.eng-tips.com/viewthread.cfm?qid=330841

    só que agora os outro parametros não estão entrando.. não dá erro, fica tudo em branco.. e na tela do SOLVER somente aparece as restrições..

    Meu SolverOk ficou assim:

                                                    

    Dim n As Integer    ' Procura a última linha preenchida das variáveis
            Dim p As Integer
            Dim t As Integer
            Dim u As Integer

            n = Plan1.Range("B65000").End(xlUp).Row

            p = Plan1.Range("$E$5").Value

            t = Plan1.Range("$T$4").Value

            u = Plan1.Range("$E$8:$E$" & n).Value

            'Seta os parâmetros iniciais
            SolverOk SetCell:="" & p, MaxMinVal:="" & t, ValueOf:=0, ByChange:="$E$8:$E$" & n, _
                Engine:=2, EngineDesc:="Simplex LP"


    quarta-feira, 3 de outubro de 2012 17:50
  • Inclusive já tentei inserir diretamente a célula no SolverOk, mas sem resultado..
    quarta-feira, 3 de outubro de 2012 17:52
  • tipo incompatível para u
    quarta-feira, 3 de outubro de 2012 17:56