Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Solver mit zusätzlicher Variable und Zielwert eränzen
#1
Hallo Leute,

Ich möchte gerne meinen VBA-Solver ergänzen, nur habe ich leider keine Idee wie das geht. Mein aktuelle Solver sieht so aus:

Sub VerschVerbund()
    For i = 4 To 103
        SolverReset
        OBJSTRING = "$O$" & i
        VARSTRING = "$L$" & i
        SolverOk SetCell:=Range(OBJSTRING), MaxMinVal:=3, ValueOf:=0, ByChange:=(VARSTRING)
        SolverOptions Precision:=0.000001
        SolverSolve UserFinish:=True
    Next
End Sub


Nun habe ich die Zelle "B42" als zusätzliche Variable (Wert zwischen 0-2), die vor jedem Solver-Durchgang geändert werden muss. Die Zelle beeinflusst das Resultat der ganzen Tabelle und muss so angepasst werden, damit der Wert in "E44" dem Wert in "N103" entspricht. Eine Präzision von 0.1 ist dabei ausreichend.

Also muss der Solver folgendes tun: ändern von "B42" -> Solver -> Vergleich "E44" mit "N103" -> wenn ok Finish, wenn nicht -> ändern von "B42" und wieder von Beginn

Ich hoffe ich habe mich verständlich ausgedrückt :)


Danke schonmal für die Hilfe.
Tschibolli
Antworten Top
#2
Hallöchen,

Du könntest z.B. nach dem For eine Zeile einfügen und dort B42 ändern.
Vor dem Next fügst Du auch eine Zeile ein wo DU beide Werte vergleichst und wenn ok, dann Exit For.

Falls Du zu jedem i die 3 Werte in B42 haben willst, dann könntest Du das über eine weitere Schleife lösen, im Prinzip so:
Code:
For i = 4 to ...
For J = 0 to 2
  Range("B42").Value=j
  solvercode ....
  if ... Then Exit for
Next
Next
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Thumbs Up 
hi danke für die Hilfe. so hats geklappt
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste