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.