VBA – Solver

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on September 1, 2023

 

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

O Solver é um suplemento 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 nos valores que você pode passar para a fórmula a partir de outras células na pasta de trabalho.

Como Ativar o Suplemento Solver no Excel

Selecione Arquivo na faixa de opções do Excel e, em seguida, vá até Opções.

comando opcoes excel

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

ir suplementos excel

Certifique-se de que a opção Solver esteja selecionada.

selecionar suplemento solver

Como alternativa, clique em Suplementos do Excel na faixa de opções Desenvolvedor para obter a caixa de diálogo Suplementos.

suplementos excel barra

Como Ativar o Suplemento do Solver no VBA

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

Certifique-se de que esteja clicado no projeto VBA em que deseja usar o Solver. Clique no menu Ferramentas e depois em Referências.

vbe referencias solver

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

referencia solver adicionada

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

Uso das Funções do Solver no VBA

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

SolverOK

vba solver ok syntax

  • SetCell (Definir Célula)opcional – precisa se referir à célula que precisa ser alterada – precisa conter uma fórmula. Isso corresponde à caixa Definir Objetivo na caixa de diálogo Parâmetros do Solver.
  • MaxMinVal opcional – Você pode definir esse valor como 1 (Maximizar), 2 (Minimizar) ou 3. Corresponde às opções Max, Min e Valor de na caixa de diálogo Parâmetros do Solver.
  • ValueOf (Valor De) – opcional – Se MaxMinValue estiver definido como 3, você precisará fornecer esse argumento.
  • ByChange (Alterando) – opcional -Isso informa ao Solver quais células ele pode alterar para chegar ao valor necessário. Isso corresponde à caixa Alterando Células Variáveis na caixa de diálogo Parâmetros do Solver.
  • Engine (Mecanismo) – 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 Nonlinear ou 3 para o método Evolutionary. Isso corresponde à lista suspensa Selecionar um Método de Solução na caixa de diálogo Parâmetros do Solver.
  • EngineDesc (Descrição do Mecanismo) opcional – essa é uma maneira alternativa de selecionar o método de solução – aqui você digitaria as cadeias de caracteres “Simplex LP”, “GRG Nonlinear” ou “Evolutionary”. Isso também corresponde à lista suspensa Selecionar um Método de Solução na caixa de diálogo Parâmetros do Solver.

SolverAdd

vba solver add syntax

  • CellRef (Célula Referência)obrigatórioé uma referência a uma célula ou a um intervalo de células que devem ser alteradas para resolver o problema.
  • Relation (Relação)obrigatório – esse é 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 que sejam números inteiros.
    • 5 é deve ter valores entre 0 ou 1.
    • 6 é deve ter valores finais que sejam todos diferentes e inteiros.
  • FormulaText (Texto da Fórmula) opcional – O lado direito da restrição.

Exemplo de Criação de um Solver

Considere a seguinte planilha

planilha projecao lucros

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 F2 a F6.

Sub TesteSolver
 SolverOk SetCell:="$B$14", MaxMinVal:=3, ValueOf:=0, ByChange:="$F$2:$F$6", Engine:=1, EngineDesc:="GRG Nonlinear"
End Sub

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

Sub TesteSolver
 SolverOk SetCell:="$B$14", MaxMinVal:=3, ValueOf:=0, ByChange:="$F$2:$F$6", Engine:=1, EngineDesc:="GRG Nonlinear"
'adicionar critérios - F3 não pode ser menor que 8
 SolverAdd CellRef:="$F$3", Relation:=3, FormulaText:="8"
'adicionar critérios - F5 não pode ser menor que 5000
 SolverAdd CellRef:="$F$5", Relation:=3, FormulaText:="5000"
End Sub

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

Sub TesteSolver
 SolverOk SetCell:="$B$14", MaxMinVal:=3, ValueOf:=0, ByChange:="$F$2:$F$6", Engine:=1, EngineDesc:="GRG Nonlinear"
'adicionar critérios - F3 não pode ser menor que 8 
 SolverAdd CellRef:="$F$3", Relation:=3, FormulaText:="8" 
'adicionar critérios - F5 não pode ser menor que 5000
 SolverAdd CellRef:="$F$5", Relation:=3, FormulaText:="5000"
'encontrar uma solução resolvendo o problema
 SolverSolve
End Sub

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

resultado final solver

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA