Está en la página 1de 2

Hoy voy a contar un poco por encima como usar el complemento Solver en Excel pero

programándolo con macros en VBA.

Doy por supuesto que sabeis como funciona el complemento Solver, por lo que empiezo con la
macro:

En primer lugar, con Solver, además del complemento también nos encontraremos con la
librería encargada de almacenar las funciones. Por lo que lo primero que tenemos que hacer
antes de nada es añadir la referencia en nuestro proyecto buscando el archivo .xlam

Una vez añadida ya podemos usar todos los objetos de la misma.

El código quedaría así:

En primer lugar se llama a la función SolverReset para eliminar todas las soluciones y
configuraciones que había almacenadas de anteriores usos.

En segundo lugar hacemos uso de la función SolverOk, con esta función introducimos los
parámetros que vamos a usar en el cálculo, su sintaxis es:

SolverOK ( SetCell, MaxMinVal, ValueOf, ByChange)

donde SetCell indica la celda con la función objetivo.

MaxMinVal es el argumento donde se introducen los códigos para determinar si queremos:

Maximizar: 1

Minimizar: 2

Otro valor: 3

ValueOf contiene el valor que queremos obtener en la función objetivo, para especificar este
argumento, el anterior debe ser 3.

ByChange especifica las celdas con las variables que han de ser obtenidas por Solver.

Adicionalmente se pueden especificar otros dos argumentos:

Engine y EngineDesc.

Ambos especifican lo mismo, que es el método usado para resolver el problema. El primer
argumento es el mas cómodo puesto que codifica los métodos:

1 – GRG Nonlinear

2- Simplex

3- Evolutionary

Ahora nos queda por usar la función SolverSolve, que ejecuta por fin el complemento.

Esta función admite dos argumentos y su sintaxis es:

SolverFinish (KeepFinal, ReportArray)

El argumento KeepFinal nos sirve para especificar que hacer con los resultados obtenidos por
Solver;
1- Los valores obtenidos por Solver reemplazan los que había anteriormente en las celdas.

2-Los valores obtenidos se desechan.

El argumento ReportArray, es interesante para que Solver nos devuelva también el análisis de
sensibilidad del problema, en tal caso debe asignarse el valor 2.

También podría gustarte