Страницы: 1
RSS
goalseek и solver (код VBA)
 
Всем доброго утра.  
Давно тут не был, тут все такой же веселый и дружный народ?))  
У меня вопрос есть по теме, буду благодарен премного, если кто просто ответит (ничего решать не нужно)))  
Главный вопрос): в общем, когда использую goakseek, он не может найти значение. В то же время solver отлично его ищет, если ограничить значения в ячейке (условно, задавая диапазон от 0 до 1). Есть ли возможность при использовании goalseek как-то ограничить диапазон поиска? (пробовал ограничить через "проверка данных" для конкретных ячеек - не работает). В стандартном функционале такого не нашел.  
Неглавный вопрос: откуда возник предыдущий вопрос?) мне нужно несколько раз сделать подбор параметра, что я и делаю через for... next, но solver каждый раз выдает всплывающее окно, которое мешает. Можно как-нибудь это окошко деактивировать?
 
SOLVERsolve True - окно не появляется. Пример тут:  
http://www.planetaexcel.ru/forum.php?thread_id=7527  
post_211316.xls
 
Ув.господин Казанский,  
Вы как ответите, я потом себе полдня голову ломаю)))  
вот и в этот раз... познал новое)) Range.DirectPrecedents Property, буду разбираться.  
А по поводу goalseek - никак не ограничить диапазон решений?
 
{quote}{login=Казанский}{date=05.04.2011 10:51}{thema=}{post}SOLVERsolve True - окно не появляется. Пример тут:  
http://www.planetaexcel.ru/forum.php?thread_id=7527  
post_211316.xls{/post}{/quote}  
ох, забыл... спасибо огромное, конечно))
 
{quote}{login=Казанский}{date=05.04.2011 10:51}{thema=}{post}SOLVERsolve True - окно не появляется. Пример тут:  
http://www.planetaexcel.ru/forum.php?thread_id=7527  
post_211316.xls{/post}{/quote}  
и если недолго и несложно - откуда в вашем примере изначально берется ссылка на solver.xla (которая еще и missing)? (я смотрю, это стандартная фишка, но на своих компах я такого не замечал)
 
{quote}{login=Obaldes}{date=05.04.2011 11:12}{thema=Re: }{post}{quote}{login=Казанский}{date=05.04.2011 10:51}{thema=}{post}SOLVERsolve True - окно не появляется. Пример тут:  
http://www.planetaexcel.ru/forum.php?thread_id=7527  
post_211316.xls{/post}{/quote}  
и если недолго и несложно - откуда в вашем примере изначально берется ссылка на solver.xla (которая еще и missing)? (я смотрю, это стандартная фишка, но на своих компах я такого не замечал){/post}{/quote}  
))) щас я сам с собой диалог тут устрою. С другой стороны, больше пишешь - легче запоминаешь.  
Посмотрел тут http://peltiertech.com/Excel/SolverVBA.html, судя по всему, это все из-за более ранних версий excel. Код в конце для первоначального запуска solver, и следующий - просто капец))
 
Да, не все так просто с Reference на Solver в другой версии.  
И в списке библиотек SOLVER не появляется, пока не вызовешь его вручную!  
Об этом написано на странице, на которую Obaldes дал ссылку:  
 
One frequent complaint about automating Solver is that it doesn't work using VBA until it has been used at least once manually. This is because Solver installs itself in a kind of "on demand" mode. Unlike a regularly-installed add-in, it is not opened until it is first used...
 
{quote}{login=The_Prist}{date=05.04.2011 11:27}{thema=}{post}Да, если файл был создан на компьютере с установленной версией офиса, отличной от Вашей(это может быть 2007, а у Вас 2003), то напротив SOLVER будет MISSING. Надо снять галочку, найти там же в библиотеках SOLVER и поставить заново. Сохранить проект.{/post}{/quote}  
да я так и сделал, это понятно) но все равно спасибо)  
а вот еще такой вопрос (ну, это по поводу того файла, ссылку на который выложил г-н Казанский), там есть такой код:  
Private Sub Worksheet_Change(ByVal Target As Range)  
On Error Resume Next  
Application.EnableEvents = False  
If Not Intersect(Range(SOLVER.solver_opt).DirectPrecedents, Target) Is Nothing Then SOLVERsolve True  
Application.EnableEvents = True  
End Sub  
Я понять не могу, откуда взялось наименование диапазона SOLVER.solver_opt, и как это работает? Диапазоны в книге не именованы, в коде вообще прямо указания на setcell и bychange нету... я в замешательстве...
 
а-а, увидел ссылку на solver.xlam. Посмотрим...
 
{quote}{login=Obaldes}{date=05.04.2011 11:51}{thema=Re: Re: }{post}а-а, увидел ссылку на solver.xlam. Посмотрим...{/post}{/quote}  
да нет, вроде excel сам автоматически добавляет ссылку для работы приложения... непонятно.
 
пришел к единственно логичному решению: мы сначала запускаем Поиск решения (solver) вручную, excel каким-то образом его запоминает. Но каким образом мы приходим к Range(SOLVER.solver_opt)???  
ЗЫ в интернете вообще помощи нету на эту тему((
 
Да, в книге хранится информация о параметрах Поиска решения. Когда мы вызываем Поиск после открытия книги - он показывает окно с сохраненными параметрами.  
SOLVER.solver_opt - это объект и его свойство. При изменении вручную параметров солвера свойство меняется и макрос работает уже с новым диапазоном без необходимости менять сам макрос.
 
{quote}{login=Казанский}{date=05.04.2011 12:21}{thema=}{post}Да, в книге хранится информация о параметрах Поиска решения. Когда мы вызываем Поиск после открытия книги - он показывает окно с сохраненными параметрами.  
SOLVER.solver_opt - это объект и его свойство. При изменении вручную параметров солвера свойство меняется и макрос работает уже с новым диапазоном без необходимости менять сам макрос.{/post}{/quote}  
круть нереальная!!!))) (прошу прощения, я читал, что тут такая лексика не приветствуется)) т.е. весь код - SOLVERsolve True  
А как вы узнали конкретное название объекта и его свойств?
 
{quote}{login=Obaldes}{date=05.04.2011 12:35}{thema=Re: }{post}{quote}{login=Казанский}{date=05.04.2011 12:21}{thema=}{post}Да, в книге хранится информация о параметрах Поиска решения. Когда мы вызываем Поиск после открытия книги - он показывает окно с сохраненными параметрами.  
SOLVER.solver_opt - это объект и его свойство. При изменении вручную параметров солвера свойство меняется и макрос работает уже с новым диапазоном без необходимости менять сам макрос.{/post}{/quote}  
круть нереальная!!!))) (прошу прощения, я читал, что тут такая лексика не приветствуется)) т.е. весь код - SOLVERsolve True  
А как вы узнали конкретное название объекта и его свойств?{/post}{/quote}  
глупый вопрос, да?(
 
> А как вы узнали конкретное название объекта и его свойств?  
После того, как подключил SOLVER в Tools - References, посмотрел свойства и методы в Project Explorer, немного поэкспериментировал в окне Immediate и нашел :)
Страницы: 1
Наверх