VBA Solver

Este tutorial mostrará como usar o suplemento Solver no VBA.

Solver é um suplemento que é fornecido com o Excel e é usado para realizar análises 'e se', fornecendo respostas alternativas para uma fórmula em uma célula com base em valores que você pode passar para a fórmula a partir de outras células em sua pasta de trabalho.

Habilitando o suplemento Solver no Excel

Selecione os Arquivo na faixa de opções do Excel e, em seguida, vá para Opções

Selecione Suplementos e clique no Ir botão ao lado de Suplementos do Excel.

Certifique-se de que Suplemento Solver opção é selecionada.

Alternativamente, clique no Suplementos Excel no Desenvolvedor faixa de opções para obter a caixa de diálogo Add-ins.

Habilitando o suplemento Solver no VBA

Depois de habilitar o suplemento Solver no Excel, você precisa adicionar uma referência a ele em seu projeto VBA para usá-lo no VBA.

Certifique-se de ter clicado no Projeto VBA onde deseja usar o Solver. Clique no Menu de ferramentas e então em Referências.

Uma referência ao Suplemento Solver será adicionado ao seu projeto.

Agora você pode usar o suplemento Solver no código VBA!

Usando funções do Solver no VBA

Precisamos usar 3 funções VBA do Solver para usar o Solver no VBA. Estes são SolverOK, SolverAdd, e SolverSolve.

SolverOK

  • SetCell - opcional - precisa se referir à célula que precisa ser alterada - precisa conter uma fórmula. Isso corresponde aoDefinir célula objetivo caixa noParâmetros do Solver caixa de diálogo.
  • MaxMinVal - opcional - Você pode definir isso para 1 (Maximize), 2 (Minimize) ou 3. Isso corresponde ao Máx., Min, eValor opções noParâmetros do Solver caixa de diálogo.
  • Valor de - opcional -Se MaxMinValue for definido como 3, você precisará fornecer este argumento.
  • Pela mudança - opcional -Isso diz ao solver quais células ele pode alterar para obter o valor necessário. Isso corresponde aoAlterando Células Variáveis caixa noParâmetros do Solver caixa de diálogo.
  • Motor - opcional - indica o método de solução que precisa ser usado para chegar a uma solução. 1 para o método Simplex LP, 2 para o método GRG não linear ou 3 para o método evolucionário. Isso corresponde aoSelecione um método de resolução lista suspensa noParâmetros do Solver caixa de diálogo
  • EngineDesc - opcional -esta é uma maneira alternativa de selecionar o método de solução - aqui você digitaria as strings “Simplex LP”, “GRG Não linear” ou “Evolucionário”. Isso também corresponde aoSelecione um método de resolução lista suspensa noParâmetros do Solver caixa de diálogo

SolverAdd

  • CellRef - obrigatório - esta é uma referência a uma célula ou um intervalo de células que devem ser alteradas para resolver o problema.
  • Relação - obrigatório - este é um número inteiro que deve estar entre 1 e 6 e especifica a relação lógica permitida.
    • 1 é menor que (<=)
    • 2 é igual a (=)
    • 3 é maior que (> =)
    • 4 deve ter valores finais inteiros.
    • 5 deve ter valores entre 0 ou 1.
    • 6 deve ter valores finais diferentes e inteiros.
  • FormulaText - opcional - O lado direito da restrição.

Criação de um exemplo de Solver

Considere a seguinte planilha.

Na planilha acima, precisamos atingir o ponto de equilíbrio no mês número um, definindo a célula B14 como zero, alterando os critérios nas células F1 a F6.

123 Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Motor: = 1, MotorDesc: = "GRG não linear"End Sub

Depois de configurar os parâmetros do SolverOK, você precisa adicionar algumas restrições de critérios.

1234567 Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Motor: = 1, MotorDesc: = "GRG não linear"'adicionar critérios - F3 não pode ser inferior a 8SolverAdd CellRef: = "$ F $ 3", Relação: = 3, FormulaText: = "8"'adicionar critérios - F3 não pode ser inferior a 5000SolverAdd CellRef: = "$ F $ 5", Relação: = 3, FormulaText: = "5000"End Sub

Depois de definir o SolverOK e o SolverAdd (se necessário), você pode resolver o problema.

1234567 Sub TestSolverSolverOk SetCell: = "$ B $ 14", MaxMinVal: = 3, ValueOf: = 0, ByChange: = "$ F $ 2: $ F $ 6", Motor: = 1, MotorDesc: = "GRG não linear"'adicionar critérios - F3 não pode ser menor que 8 SolverAdd CellRef: = "$ F $ 3", Relação: = 3, FormulaText: = "8"' adicionar critérios - F3 não pode ser menor que 5000SolverAdd CellRef: = "$ F $ 5", Relação: = 3, FormulaText: = "5000"'encontrar uma solução resolvendo o problemaSolverSolveEnd Sub

Depois de executar o código, a janela a seguir será exibida na tela. Selecione a opção necessária (ou seja, Manter a solução Solver ou Restaurar Valores Originais) e clique em OK.

wave wave wave wave wave