VBA – Solver
In this Article
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.
Selecione Suplementos e clique no botão Ir ao lado de Suplementos do Excel.
Certifique-se de que a opção Solver esteja selecionada.
Como alternativa, clique em Suplementos do Excel na faixa de opções Desenvolvedor para obter a caixa de diálogo Suplementos.
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.
Uma referência ao Suplemento Solver será adicionada ao seu projeto.
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
- 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
- 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
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.