Невозможно установить целочисленное ограничение в Солвере, используя VBA - PullRequest
0 голосов
/ 26 февраля 2019

Кажется, есть довольно много нерешенных вопросов, подобных этой, которая всплывает вокруг.Я позаботился о том, чтобы ни один из ответов / ответов, представленных в других вопросах, не решил мою проблему.

Цель : настроить и активировать Solver с помощью VBA .

Проблема : Кажется, все работает, за исключением того, что целочисленное ограничение не считается .Это можно подтвердить, посмотрев диалоговое окно Solver вручную после запуска VBA.

Мой код выглядит следующим образом:

SolverReset    

'Set constraints    

SolverAdd cellRef:=Range("$L$2:$L$99"), relation:=4, FormulaText:="integer"     

SolverAdd cellRef:=Range("$N$1"), relation:=2, FormulaText:=0     

SolverAdd cellRef:=Range("$N$2:$N$99"), relation:=3, FormulaText:=0    

'Set Objective    

SolverOk SetCell:="$T$1", MaxMinVal:=2, ValueOf:="0",_
    ByChange:="$L$2:$L$99", Engine:=1, EngineDesc:="GRG Nonlinear"    

'Run Solver    

SolverSolve UserFinish:=True 

Открытие диалогового окна решателя показывает, что все, кроме целочисленного ограничениябыло успешно установлено: отсутствует целочисленное ограничение

Обратите внимание, что я уже пробовал:

- исключая FormulaText:="integer"

- двойные кавычки вокругмои FormulaText значения

- перезагрузка компьютера

1 Ответ

0 голосов
/ 28 февраля 2019

ууууууууууууууууууууууууууууу!

Я как-то наткнулся на свой ответ!Или, по крайней мере, ответ (я до сих пор не знаю, почему оригинальный код не работает).

Замена SolverAdd cellRef:=Range("$L$2:$L$99"), relation:=4, FormulaText:="integer"

на SolverAdd CellRef:="$L$2:$L$99", Relation:=4, FormulaText:="integer"

Кажется, чтобы иметьсделал трюк.

Я все еще использую

SolverAdd CellRef:=Range("N1"), Relation:=2, FormulaText:=0

и

SolverAdd CellRef:=Range("$N$2:$N$40"), Relation:=3, FormulaText:=0

Потому что они работают ..Так зачем их менять.

Если кто-нибудь может объяснить, почему оригинальный код не работает, я был бы очень благодарен!

...