SolverSolve-Funktion

Startet die Problemlösung durch Solver. Entspricht dem Klicken auf Lösen im Dialogfeld Solver-Parameter.

Hinweis Das Solver-Add-In ist standardmäßig nicht aktiviert. Bevor Sie diese Funktion verwenden können, muss das Solver-Add-In aktiviert und installiert werden. Informationen hierzu finden Sie unter Verwenden der Solver VBA-Funktionen. Nach der Installation des Solver-Add-Ins müssen Sie einen Verweis auf das Solver-Add-In erstellen. Klicken Sie im Visual Basic-Editor mit einem aktiven Modul auf Verweise im Menü Extras, und wählen Sie dann Solver unter Verfügbare Verweise aus. Wenn Solver nicht unter Verfügbare Verweise angezeigt wird, klicken Sie auf Durchsuchen, und öffnen Sie dann "Solver.xlam" im Unterordner "\Programme\Microsoft Office\Office14\Library\SOLVER".

SolverSolve( UserFinish, ShowRef)

UserFinish Optionaler Variant -Wert. Falls True, wird das Ergebnis ohne Anzeige des Dialogfelds Solver-Ergebnisse zurückgegeben. Falls False oder nicht angegeben, wird das Ergebnis zurückgegeben und das Dialogfeld Solver-Ergebnisse angezeigt. ShowRef Optionaler Variant-Wert. Sie können den Namen eines Makros (als Zeichenfolge) als ShowRef-Argument übergeben. Dieses Makro wird dann aufgerufen, anstatt das Dialogfeld Testlösung anzeigen anzuzeigen, wenn Solver aus einem der unten aufgeführten Gründe anhält. Das ShowRef-Makro muss über den Signaturfunktionsnamen (Reason As Integer) verfügen. Das Argument Reason ist ein ganzzahliger Wert zwischen 1 und 5:

  1. Funktion wird (bei jeder Iteration) aufgerufen, da das Kontrollkästchen Iterationsergebnisse anzeigen im Dialogfeld Solver-Optionen aktiviert wurde, oder die Funktion wird aufgerufen, da der Benutzer die ESC-Taste gedrückt hat, um den Solver zu unterbrechen.

  2. Funktion wird aufgerufen, da der Grenzwert Höchstzeit im Dialogfeld Solver-Optionen überschritten wurde.

  3. Funktion wird aufgerufen, da der Grenzwert Iterationen im Dialogfeld Solver-Optionen überschritten wurde.

  4. Funktion wird aufgerufen, da der Grenzwert Maximale Anzahl Teilprobleme im Dialogfeld Solver-Optionen überschritten wurde.

  5. Funktion wird aufgerufen, da der Grenzwert Maximale Anzahl machbarer Lösungen im Dialogfeld Solver-Optionen überschritten wurde.

Die Makrofunktion muss 1 zurückgeben, wenn Solver beendet werden soll (identisch mit der Schaltfläche Beenden im Dialogfeld Testlösung anzeigen ), oder 0, wenn Solver weiter ausgeführt werden soll (identisch mit der Schaltfläche Weiter ). Das ShowRef-Makro kann die aktuellen Projektmappenwerte auf dem Arbeitsblatt überprüfen oder andere Aktionen ausführen, z. B. Speichern oder Diagramme der Zwischenwerte. Jedoch sollte es die Werte in Variablenzellen oder Formeln in Ziel- und Nebenbedingungszellen nicht ändern, da sich dies nachteilig auf den Lösungsvorgang auswirken kann.

SolverSolve-Rückgabewert

Wenn ein Solver-Problem nicht vollständig definiert wurde, gibt SolverSolve den #N/A-Fehlerwert zurück. Andernfalls wird Solver ausgeführt, und SolverSolve gibt einen ganzzahligen Wert zurück, der der Meldung entspricht, die im Dialogfeld Solver-Ergebnisse angezeigt wird:

Rückgabewert Nachricht
0 Solver hat eine Lösung gefunden. Alle Nebenbedingungen und Optionen wurden eingehalten.
1 Solver hat die aktuelle Lösung durch Konvergieren erreicht. Alle Nebenbedingungen wurden eingehalten.
2 Solver kann die aktuelle Lösung nicht verbessern. Alle Nebenbedingungen wurden eingehalten.
3 Solver wurde beim Erreichen der Iterationsgrenze abgebrochen.
4 Die Werte der Zielzelle konvergieren nicht.
5 Solver konnte keine machbare Lösung finden.
6 Solver wurde auf Anforderung des Benutzers abgebrochen.
7 Die für diesen LP Solver erforderlichen Linearitätsbedingungen sind nicht erfüllt.
8 Das Problem ist für die Verarbeitung durch Solver zu groß.
9 Fehlerwert bei Solver in der Zielzelle oder einer Nebenbedingungszelle.
10 Solver wurde beim Erreichen der Höchstzeit abgebrochen.
11 Es ist nicht genügend Arbeitsspeicher zur Lösung des Problems verfügbar.
13 Fehler im Modell. Überprüfen Sie, ob alle Zellen und Nebenbedingungen gültig sind.
14 Solver hat eine ganzzahlige Lösung innerhalb des Toleranzbereichs gefunden. Alle Nebenbedingungen wurden eingehalten.
15 Solver wurde beim Erreichen der maximalen Anzahl ganzzahliger machbarer Lösungen abgebrochen.
16 Solver wurde beim Erreichen der maximalen Anzahl ganzzahliger Teilprobleme abgebrochen.
17 Solver hat eine wahrscheinliche Konvergenz zu einer globalen Lösung gefunden.
18 Alle Variablen müssen obere und untere Grenzwerte aufweisen.
19 Konflikt der Variablengrenzen für die Binary- oder AllDifferent-Nebenbedingung
20 Die unteren und oberen Grenzwerte der Variablen lassen keine machbare Lösung zu.

Beispiel

In diesem Beispiel werden die Solver-Funktionen verwendet, um den Bruttogewinn in einem geschäftlichen Problem zu maximieren. Die SolverSolve-Funktion beginnt mit der Ausführung der Solver-Lösung. Solver ruft die Funktion ShowTrial auf, wenn eine der fünf oben beschriebenen Bedingungen eintritt; die Funktion zeigt einfach eine Nachricht mit dem Ganzzahlwert 1 bis 5 an.

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

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.