Función SolverSolve

Inicia una ejecución de la solución Solver. Equivalente a hacer clic en Resolver en el cuadro de diálogo Parámetros de Solver.

Nota El complemento Solver no está habilitado de forma predeterminada. Para poder usar esta función, debe tener el complemento de Solver habilitado e instalado. Para obtener información sobre cómo hacer eso, consulte Uso de las funciones de Solver VBA. Una vez instalado el complemento de Solver, debe establecer una referencia al complemento de Solver. En el Editor de Visual Basic, con un módulo activo, haga clic en Referencias en el menú Herramientas y, después, seleccione Solucionador en Referencias disponibles. Si Solver no aparece en Referencias disponibles, haga clic en Examinar y, a continuación, abra Solver.xlam en la subcarpeta \Archivos de programa\Microsoft Office\Office14\Library\SOLVER.

SolverSolve( UserFinish, ShowRef)

UserFinishVariant opcional. True para devolver los resultados sin mostrar el cuadro de diálogo Resultados de Solver. False u omitido para devolver los resultados y mostrar el cuadro de diálogo Resultados de Solver. ShowRefVariant opcional. Puede pasar el nombre de una macro (como una cadena) como argumento ShowRef . A continuación, se llama a esta macro, en lugar de mostrar el cuadro de diálogo Mostrar solución de prueba, cada vez que Solver se detiene por cualquiera de los motivos que se enumeran a continuación. La macro ShowRef debe tener el nombre de la función de firma (motivo como entero). El argumento Reason es un valor entero de 1 a 5:

  1. Función llamada (en toda iteración) porque está activado el cuadro Mostrar resultados de iteraciones en el cuadro de diálogo Opciones de Solver, o se llamó a la función porque el usuario presionó ESC para interrumpir Solver.

  2. Función llamada porque se superó el límite Tiempo máximo en el cuadro de diálogo Opciones de Solver.

  3. Función llamada porque se superó el límite Iteraciones en el cuadro de diálogo Opciones de Solver.

  4. Función llamada porque se superó el límite Subproblemas máximos en el cuadro de diálogo Opciones de Solver.

  5. Función llamada porque se superó el límite Máximas soluciones posibles en el cuadro de diálogo Opciones de Solver.

La función de macro debe devolver 1 si Solver debe detenerse (igual que el botón Detener del cuadro de diálogo Mostrar solución de prueba ) o 0 si Solver debe continuar ejecutándose (igual que el botón Continuar ). La macro ShowRef puede inspeccionar los valores actuales de la solución en la hoja de cálculo o realizar otras acciones, como guardar o trazar los valores intermedios. Pero no debe alterar los valores en las celdas de variables ni las fórmulas en las celdas objetivo y de restricciones, ya que esto podría afectar negativamente al proceso de la solución.

Valor devuelto de SolverSolve

Si no se ha definido completamente un problema de Solver, SolverSolve devuelve el valor de error #N/A. En caso contrario, se ejecuta Solver, y SolverSolve devuelve un valor entero correspondiente al mensaje que aparece en el cuadro de diálogo Resultados de Solver:

Valor devuelto Mensaje
0 Solver encontró una solución. Se cumplen todas las restricciones y condiciones óptimas.
1 Solver ha convergido a la solución actual. Se cumplen todas las restricciones.
2 Solver no puede mejorar la solución actual. Se cumplen todas las restricciones.
3 Se eligió detener al alcanzar el límite máximo de iteraciones.
4 Los valores de celda objetivo no convergen.
5 Solver no encontró ninguna solución viable.
6 Solver se detuvo con la solicitud del usuario.
7 No se cumplen las condiciones de linealidad requeridas por este Solver de PL.
8 El problema es demasiado grande para que Solver lo resuelva.
9 Solver encontró un valor de error en una celda de destino o restricción.
10 Se eligió la interrupción al alcanzar el límite máximo de tiempo.
11 Memoria insuficiente para resolver el problema.
13 Error en el modelo. Compruebe que todas las celdas y restricciones son válidas.
14 Solver encontró una solución de enteros en la tolerancia. Se cumplen todas las restricciones.
15 Se eligió detener al alcanzar el número máximo de soluciones viables [enteros].
16 Se eligió detener al alcanzar el número máximo de subproblemas viables [enteros].
17 Solver llegó a la probabilidad para una solución global.
18 Todas las variables deben tener límites tanto superior como inferior.
19 Existe un conflicto de límites variables en la restricción binaria o de todos diferentes.
20 Los límites inferior y superior en las variables no permiten ninguna solución viable.

Ejemplo

Este ejemplo usa las funciones de Solver para maximizar el beneficio bruto en un problema empresarial. La función SolverSolve ejecuta la solución de Solver. Solver llama a la función ShowTrial cuando se produce cualquiera de las cinco condiciones descritas más arriba; la función simplemente muestra un mensaje con el valor entero de 1 a 5.

Worksheets("Sheet1").Activate 
SolverReset 
SolverOptions Precision:=0.001 
SolverOK SetCell:=Range("TotalProfit"), _ 
    MaxMinVal:=1, _ 
    ByChange:=Range("C4:E6") 
SolverAdd CellRef:=Range("F4:F6"), _ 
    Relation:=1, _ 
    FormulaText:=100 
SolverAdd CellRef:=Range("C4:E6"), _ 
    Relation:=3, _ 
    FormulaText:=0 
SolverAdd CellRef:=Range("C4:E6"), _ 
    Relation:=4 
SolverSolve UserFinish:=False, ShowRef:= "ShowTrial" 
SolverSave SaveArea:=Range("A33") 
 
Function ShowTrial(Reason As Integer) 
  Msgbox Reason 
  ShowTrial = 0 
End Function

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.