Automatisch accepteren van Solver uitkomst in VBA

Status
Niet open voor verdere reacties.

KC2007

Nieuwe gebruiker
Lid geworden
1 jun 2007
Berichten
2
Mbv solver kan ik via een interatie een waarde uitrekenen voor mijn vergelijking. Zosnel solver klaar is vraagt solver mij te bevestigen of ik de solver solution accepteer. Omdat ik op deze manier 2500 vergelijkingen wil oplossen heb ik in VBA een 'for' loop gebouwd die een voor een de 2500 vegelijkingen opzet in solver en vervolgens oplost.
Probleem is nu echter dat ik na elke oplossing de nieuwe waarden moet accepteren. Is er een manier om deze waarden automatisch te accepteren, dus zonder dat ik op enter hoef te drukken?
 
Solver, wat is dat?
Accepteren van nieuwe waarden, waar, in Solver zelf (wat dat dan ook moge wezen)?

Even iets duidelijker informatie graag.

Groet,

Tardis
 
Volgens mij kan dat niet.

Maar evt. wel als het probleem met GoalSeek (Doelzoeken) op te lossen is.

Wigi
 
Nadat ik een tijd heb zitten prutsen kwam ik erachter dat de code voor automatisch accepteren in solver moest zijn "SolverSolve UserFinish = False" dus zonder een dubbele punt. Misschien handig voor andere gebruikers.
 
Nadat ik een tijd heb zitten prutsen kwam ik erachter dat de code voor automatisch accepteren in solver moest zijn "SolverSolve UserFinish = False" dus zonder een dubbele punt. Misschien handig voor andere gebruikers.

Hmmm, strange. Uit de helpfiles:


SolverSolve, functie

Met deze functie wordt het zoeken naar een oplossing gestart. Deze functie komt overeen met het klikken op Oplosser in het dialoogvenster Parameters Oplosser.

Voordat u deze functie gebruikt, moet u een verwijzing naar de invoegmacro Oplosser instellen. Zorg ervoor dat er een Visual Basic-module actief is, klik op Verwijzingen in het menu Extra en schakel vervolgens het selectievakje Oplosser.xlam onder Beschikbare verwijzingen in. Als Oplosser.xlam niet wordt weergegeven onder Beschikbare verwijzingen, klikt u op Bladeren en opent u Oplosser.xlam in de submap \office12\library\Oplosser.



SolverSolve(UserFinish, ShowRef)

UserFinish Variant, optioneel. Is True als de resultaten moeten worden opgehaald zonder het dialoogvenster Oplosser weer te geven en False als het dialoogvenster wel moet worden weergegeven. De standaardwaarde is False.
ShowRef Variant, optioneel. Dit argument wordt alleen gebruikt als True is opgegeven bij het argument StepThru van de functie SolverOptions. U kunt bij het argument ShowRef de naam van een macro opgeven in de vorm van een tekenreeks. Deze macro wordt aangeroepen als Oplosser pauzeert bij een tussenoplossing.
Voorbeeld
In dit voorbeeld worden de Solver-functies gebruikt om de bruto winst te maximaliseren in een bedrijfsprobleem. Met de functie SolverSolve wordt het zoeken naar een oplossing gestart.

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
SolverSave SaveArea:=Range("A33")

© 2006 Microsoft Corporation. Alle rechten voorbehouden.
 
Ja heel vreemd. Met die dubbelpunt ertussen moet ik het antwoord nog wel accepteren. Hier de code zoals het nu bij mij werkt.
Code:
Private Sub CommandButton1_Click()
Dim c As Range, MyRange As Range
Set MyRange = Range("B18", Range("B18").End(xlToRight))

With MyRange.Cells(1)
For Each c In MyRange
Dim TargetVal As Double
SolverReset
TargetVal = Cells(17, c.Column)

SolverOk SetCell:=c.AddressLocal, MaxMinVal:=3, ValueOf:=TargetVal, ByChange:=Cells(19, c.Column).AddressLocal
SolverSolve UserFinish = False
        Next
    End With
End Sub

Ik zie het ook staan in de helpfiles. Heb het nog een keer geprobeerd met de dubbelepunt maar dit werkt bij mij echt niet. Ik moet dan alsnog accepteren.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan