Solver per Script unzuverlässig bei Vergeben von Namen ?
01.01.2025 21:58:25
Excellist
nach vielem Rumprobieren bin ich leider etwas ratlos über das Verhalten von Excel 2016:
Mit dem Solver optimiere ich diverse Größen in der Tabelle.
Die Zellen haben definierte Namen zur Veranschaulichung (Namens-Manager, Strg+F3).
($G$24 heißt also "M2.00_Ref" und $H$21 heißt "M2.00_Adj")
Nun habe ich das Script, das den Solver aufruft, auf eine Schaltfläche gelegt und los geht's... aber:
Der Solver solvt manchmal nicht.
D.h. nach Durchlaufen des Scripts ändert sich der Wert in der zu optimierenden Zelle nicht, egal welchen Startwert ich vorgebe. Das Durchlaufen des Scripts ist auch vergleichsweise kurz (Verdacht: Der Solver rechnet gar nicht).
"Manchmal" scheint hier irgendwie willkürlich zu sein, da ich bislang noch keine Regelmäßigkeit entdecken konnte.
Nachdem ich jedoch im VBA-Script die Namen der Zellen ersetzt habe durch die Absolutbezüge, solvt der Solver sofort und immer, ausnahmslos, jederzeit korrekt. Das Durchlaufen des Scripts ist dann vergleichsweise lang.
Im Script habe ich beide "Varianten" drin, eine davon ist jeweils auskommentiert (so kann ich schneller zwischen den Varianten wechseln zum Ausprobieren).
In der folgenden Version tritt das seltsame Verhalten auf:
Sub Solve_M2_00_Ref()
'
' SolverOk SetCell:="$G$24", MaxMinVal:=2, ValueOf:=0, ByChange:="$H$21", Engine _
' :=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="M2.00_Ref", MaxMinVal:=2, ValueOf:=0, ByChange:="M2.00_Adj", Engine _
:=1, EngineDesc:="GRG Nonlinear"
SolverSolve Userfinish:=True
End Sub
Ändere ich es zu dieser Version, funktioniert der Solver einwandfei mit dem Script:
Sub Solve_M2_00_Ref()
'
SolverOk SetCell:="$G$24", MaxMinVal:=2, ValueOf:=0, ByChange:="$H$21", Engine _
:=1, EngineDesc:="GRG Nonlinear"
' SolverOk SetCell:="M2.00_Ref", MaxMinVal:=2, ValueOf:=0, ByChange:="M2.00_Adj", Engine _
' :=1, EngineDesc:="GRG Nonlinear"
SolverSolve Userfinish:=True
End Sub
Hat jemand so ein Verhalten schon mal beobachtet, oder hat jemand eine Idee, wo der Hase im Pfeffer liegen könnte?
Besten Dank!
Tom
Anzeige