まず、私が見つけた解決策(たとえば、here、私のために働いていない)を調べてみました。私は(通常)値を解決するソルバーの簡単な機能を使用するマクロを記述しようとしています。次のようにVBAソルバーの制約が設定されていないエラー
私が持っているコードは次のとおりです。
Sub SolverAEP()
Dim GeneratedPower As Double
GeneratedPower = Worksheets("AEP").Range("D57")
SolverReset
SolverOk SetCell:="$D$58", _
MaxMinVal:=3, _
ValueOf:=GeneratedPower, _
ByChange:="$D$65" _
, Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve userFinish:=False
End Sub
現時点でのエラーは、私が試してみましたSolver could not find a feasible solution. Sovler can not find a point for which all Constraints are satisified.
何ということです:
- をいくつかのオンラインの案内がVALUEOFことを言います文字列にする必要があります - 私は
Range("D57")
とCells(57,"D").Value
の両方にCStrのアプローチを試みましたが、両方ともソルバーエラーが出てきました。 - 私は手動でソルバーを開こうとすると、常に完全停止ではなくカンマで開きます。小さなスクリプトを使用してすべてのカンマを完全停止に置き換えましたが、何も変更されませんでした。私は
ValueOf
という文字列を扱っていました。なぜこのようなことが起こっているのかよくわかりませんが、コンチネンタルと英国の両方のキーボードを使用しているためローカリゼーションの設定がかなり乱雑であるため文化紛争が起こっていると思います。
Sub Macro2()
SolverOk SetCell:="$D$58", MaxMinVal:=3, ValueOf:=21000#, ByChange:="$D$65" _
, Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$D$58", MaxMinVal:=3, ValueOf:=21000#, ByChange:="$D$65" _
, Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
End Sub
VA:ソルバーに手動で同じことをやって、マクロの記録
は私に以下のようにソルバーのコードを与えます私が現在必要としている丸みを帯びている可能性がある - 私は書かれたマクロの中で小数点がまだ完全な停止の代わりにコンマを使用していたようだ。私は値を丸めてそこに入れてみましたが、同じエラーが出ました。
最後に、ソルバーでこれを手動で解決することに問題はないことを付け加えておきます。参照セルD58は他のセルの合計であり、その値はD65の値に依存する。
私が間違っていることを強調してもらえますか?あなたの式が存在したシートを活性化するため、どのような現在アクティブなシート上のプロセスをやっている解決されていないかのように、それは重要な場合には
、私はエクセル2016
(a) 'ValueOf:= GeneratedPower'ではなく、' ValueOf:= Worksheets( "AEP")Range( "D57") 'を使ってみましたか? (なぜそれが助けになるのか分かりませんが、試してみる価値があります)(b)マクロ実行時に "AEP"がアクティブシートですか? – YowE3K
できればそれを試してみます。そして、いいえ、アクティブシートではありません。それが違いを生むかもしれないと思いますか? – gktscrk
セル$ D $ 58と$ D $ 65はアクティブなシートを参照するものですか?またはAEPシートに?現在設定されているので、アクティブシートを参照します。 – YowE3K