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

Forumthread: SolverReset Fehlermeldung

SolverReset Fehlermeldung
17.09.2021 10:23:54
Genetix
Hallo zusammen,
habe folgendes Problem mit dem im VBA Code eingebundenen Solver: Der Solver an sich funktioniert! Nur bekomme ich jedes mal die Fehlermeldung "Die Zielzelle muss eine einzelne Zelle auf dem aktiven Arbeitsblatt sein". Die Zielwertsuche macht er dennoch ganz normal und gibt mir die richtige Lösung raus. Allerdings hab ich ein Makro, was 32 Datensätze einpflegt und die Zielsuche startet. Dabei kommt nach jedem Datensatz die Meldung und das ist ganz schön nervig :D
Konnte bereits herausfinden, dass die Meldung von der Zeile SolverReset kommt, die habe ich versucht auszulagern hat aber auch nicht funktioniert. Muss ich die vielleicht in das Arbeitsblatt der Zielwertsuche als Makro auslagern? Wenn ja wie kann ich dann darauf zugreifen? Ich glaube ich seh den Wald vor lauter Bäumen nicht bei der Lösung des Problems...
Danke euch schonmal im voraus
Hier der Code:

Sub Goalseek_capt()
' Goalseek_capt Makro
Call LöscheSolver
SolverOk SetCell:="$Y$33", MaxMinVal:=3, ValueOf:=0, ByChange:="$C$1,$I$1", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$C$1", Relation:=2, FormulaText:= _
"Breakeven_selling_price_capt"
SolverOk SetCell:="$Y$33", MaxMinVal:=3, ValueOf:=0, ByChange:="$C$1,$I$1", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$L$33", Relation:=1, FormulaText:="$N$1"
SolverOk SetCell:="$Y$33", MaxMinVal:=3, ValueOf:=0, ByChange:="$C$1,$I$1", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$L$33", Relation:=3, FormulaText:="$O$1"
SolverOk SetCell:="$Y$33", MaxMinVal:=3, ValueOf:=0, ByChange:="$C$1,$I$1", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$Y$33", MaxMinVal:=3, ValueOf:=0, ByChange:="$C$1,$I$1", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve userfinish:=True
End Sub
Und hier das Löschen:

Sub LöscheSolver()
Sheets("Economic balance").Activate
SolverReset
End Sub
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SolverReset Fehlermeldung
22.09.2021 16:23:08
Yal
Hallo Genetix,
wenn nur den SolverReset eine Felhlermeldung verursacht, könnte Du foilgendes probieren :

Sub LöscheSolver()
Sheets("Economic balance").Activate
Application.DisplayAlerts = False
SolverReset
Application.DisplayAlerts = True
End Sub
VG
Yal
Anzeige
AW: SolverReset Fehlermeldung
22.09.2021 16:40:45
Genetix
Hallo Yal,
vielen Dank für deine Mühe! Die DisplayAlterts auszustellen hatte ich schon probiert, das hat leider keinen Einfluss darauf gehabt. Ich habe letztendlich einfach die SolverReset Funktion rausgelassen und die Nebenbedingungen mit der SolverDelete Funktion einzeln rausgelöscht.
Grüße Kevin
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

SolverReset Fehlermeldung in Excel VBA beheben


Schritt-für-Schritt-Anleitung

Wenn Du mit der Fehlermeldung "Die Zielzelle muss eine einzelne Zelle auf dem aktiven Arbeitsblatt sein" konfrontiert wirst, während Du den Excel Solver in einem VBA-Skript verwendest, befolge diese Schritte:

  1. Aktiviere das Arbeitsblatt: Stelle sicher, dass das Arbeitsblatt, auf dem die Zielzelle definiert ist, aktiv ist, bevor Du den Solver aufrufst.

    Sheets("DeinArbeitsblatt").Activate
  2. Verwendung von SolverReset: Wenn Du SolverReset verwendest, um die Bedingungen zurückzusetzen, könnte es helfen, die DisplayAlerts-Eigenschaft auszuschalten, um störende Fehlermeldungen zu vermeiden:

    Sub LöscheSolver()
       Application.DisplayAlerts = False
       SolverReset
       Application.DisplayAlerts = True
    End Sub
  3. Füge die Bedingungen hinzu: Verwende SolverAdd, um die Bedingungen für den Solver festzulegen, und stelle sicher, dass Du SolverOk vor SolverSolve korrekt definierst.


Häufige Fehler und Lösungen

  • Fehlermeldung bei SolverReset: Wenn der Fehler bei SolverReset auftritt, könnte es an der Aktivierung des falschen Blattes liegen. Überprüfe, ob das richtige Arbeitsblatt aktiv ist.

  • Solver funktioniert nicht: Wenn der Excel Solver nicht funktioniert, stelle sicher, dass alle Zellreferenzen korrekt sind und dass die Zielzelle nur eine einzelne Zelle ist.

  • Anwendung von SolverOk: Achte darauf, dass SolverOk die gleichen Zellreferenzen verwendet, die Du für die Zielwertsuche festgelegt hast.


Alternative Methoden

Wenn Du weiterhin Probleme mit SolverReset hast, kannst Du versuchen, die Nebenbedingungen einzeln zu löschen, anstatt den gesamten Solver zurückzusetzen. Dies kann helfen, die Fehlermeldung zu vermeiden.

Sub LöscheEinzelneBedingungen()
    SolverDelete CellRef:="$C$1" ' Beispiel für das Löschen einer Bedingung
End Sub

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du den Solver in einem VBA-Skript korrekt einsetzt:

Sub BeispielSolver()
    Sheets("Economic balance").Activate
    SolverOk SetCell:="$Y$33", MaxMinVal:=3, ValueOf:=0, ByChange:="$C$1,$I$1"
    SolverAdd CellRef:="$C$1", Relation:=2, FormulaText:="Breakeven_selling_price_capt"
    SolverSolve userfinish:=True
End Sub

Dieses Skript setzt die Zielzelle und fügt eine Bedingung hinzu, bevor der Solver aufgerufen wird.


Tipps für Profis

  • Debugging: Nutze die Debugging-Funktion in VBA, um sicherzustellen, dass alle Variablen korrekt gesetzt sind, bevor Du den Solver ausführst.

  • Einstellungen optimieren: Überprüfe die Solver-Optionen, um sicherzustellen, dass die richtigen Algorithmen verwendet werden. Manchmal kann die Wahl des falschen Solvers zu Problemen führen.

  • Makros optimieren: Halte Deine Makros möglichst schlank und effizient, um die Leistung zu verbessern und Fehler zu minimieren.


FAQ: Häufige Fragen

1. Warum funktioniert der Excel Solver nicht? Der Solver könnte nicht funktionieren, wenn die Zielzelle nicht korrekt definiert ist oder wenn das aktive Arbeitsblatt nicht das richtige ist.

2. Was ist SolverReset? SolverReset ist eine Funktion in VBA, die alle Bedingungen und Parameter des Solvers zurücksetzt, um eine neue Optimierung zu ermöglichen. Es sollte jedoch mit Bedacht eingesetzt werden, da es Fehlermeldungen hervorrufen kann, wenn nicht richtig verwendet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige