Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Solver per Script unzuverlässig bei Vergeben von Namen ?

Forumthread: Solver per Script unzuverlässig bei Vergeben von Namen ?

Solver per Script unzuverlässig bei Vergeben von Namen ?
01.01.2025 21:58:25
Excellist
Hallo,

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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Solver per Script unzuverlässig bei Vergeben von Namen ?
01.01.2025 22:21:57
Onur
"hat jemand eine Idee, wo der Hase im Pfeffer liegen könnte? " ? Nur mit dem Code alleine? WAS sollen wir damit denn testen können ?
Poste mal die Datei.
AW: Solver per Script unzuverlässig bei Vergeben von Namen ?
02.01.2025 22:54:29
Excellist
Die Datei kann ich aus verschiedenen Gründen so nicht veröffentlichen. Ich müsste das ggfls. neutralisieren vorher, was erhebliche Arbeit bedeutet.

Meine Frage war zunächst nur, ob jemand das beschriebene Verhalten bereits kennt.
Also speziell, ob jemand den Solver über Script einsetzt und dabei Namen benutzt statt der Absolutbezüge.
Anzeige
AW: Solver per Script unzuverlässig bei Vergeben von Namen ?
02.01.2025 22:59:53
Onur
Siehe meine ZWEITE Antwort.
AW: Solver per Script unzuverlässig bei Vergeben von Namen ?
02.01.2025 00:50:22
Onur
Du kannst nicht einfach Bereiche mit Namen mit "M2.00_Ref" ansprechen, da das nur ein TEXT ist.
Wenn du Bereiche über Namen ansprechen willst - so:
Range("M2.00_Ref")
AW: Solver per Script unzuverlässig bei Vergeben von Namen ?
02.01.2025 23:04:16
Excellist
Vielen Dank für den Tipp mit Range(). Werde das dieser Tage probieren.
Anzeige
AW: Solver per Script unzuverlässig bei Vergeben von Namen ?
09.01.2025 23:47:25
Excellist
Vielen Dank, das hat geklappt und das Script läuft!

Grüße,
Thomas

Forumthreads zu verwandten Themen

Anzeige
Anzeige