Страницы: 1
RSS
Поиск решения в макросе (Solver in VBA).
 
Поиск решения запускается из макроса. Как узнать в коде, вернул поиск положительный или отрицательный результат?  
 
Sub Расчет()  
  SolverOk SetCell:="$C$3", MaxMinVal:=1, ValueOf:="0", ByChange:="$H$7:$H$38"  
  SolverSolve  
End Sub
 
А спросить в С3.Value нельзя?
 
Нельзя. Ответ заранее не известен. Кроме того вариантов решения множество. Правильных и не очень :)
 
А почему, действительно, нельзя так:  
Sub Расчет()  
SolverOk SetCell:="$C$3", MaxMinVal:=1, ValueOf:="0", ByChange:="$H$7:$H$38"  
SolverSolve  
If Range("C3") > 0 Then  
MsgBox "Полосательный"  
Else  
MsgBox "Отряжительный"  
End If  
End Sub
 
Итак, задача.  
Фирма1 продает "дочерней" Фирме2 товар. Фирма2 продает товар потребителям.    
Дано: количество отгруженного, продажи для фирмы2, себестоимость для Фирмы1.  
Надо минимизировать прибыль по итогам месяца на Фирме2. Для этого требуется найти такую себестоимость товаров (себестоимость для Фирмы2), при которой прибыль=расходам.  
В принципе задача решена. Но. Есть, что еще оптимизировать. А для этого хочется просто узнать коды, которые выдает SOLVER.  
 
ЗЫ: наверное многим будет интересно.
 
Впервые слышу такое: фирма собирается МИНИМИЗИРОВАТЬ прибыль! А может с наценкой поиграться? Попробовать сделать 1% :-)
 
{quote}{login=Юрий М}{date=22.12.2008 10:37}{thema=}{post}Впервые слышу такое: фирма собирается МИНИМИЗИРОВАТЬ прибыль!{/post}{/quote}  
А налоги? ;)  
 
Главный вопрос на повестке - как получить от SOLVERA код результата!
 
Еще уточняю: прибыль не должна быть меньше затрат. С учетом округления цен при вводе в 1Сы.
 
При успешном завершении поиска решения SolverSolve возвращает ноль.  
В приложенном примере нет Reference на SOLVER, так пример работать не будет.
 
Да. Выяснилось. SolverSolve выдает "5" если решение не найдено и "0" если решение найдено.  
Всем спасибо!
 
Здравствуйте. Я не очень хорошо разбираюсь в программировании и столкнулась с задачей автоматизировать поиск решения. Скажите, можно ли сделать так, чтобы поиск решения сам пересчитывался без макроса при изменении исходных данных??  
Если нет, то каким образом можно запрограммировать макрос, чтобы он просчитывал поиск решения?? Я много читала на форумах,нашла несколько вариантов кода (например тот, что вставила ниже), но никак не могу разобраться что куда подставлять и куда его прописывать...помогите пожалуйста, я в отчаянии!)  
Sub MySolver()  
   Dim wbSolv As Workbook  
     
   'подключаем "Поиск решений"  
   On Error Resume Next  
   Set wbSolv = Workbooks("Solver.xla")  
     
   On Error GoTo EH  
   If wbSolv Is Nothing Then  
       Set wbSolv = Workbooks.Open(ThisWorkbook.Path & "\Solver.xla")  
   End If  
 
   'Инициализируем  
   Application.Run "Solver.xla!Auto_Open"  
   Application.Run "Solver.xla!SolverReset"  
     
   'Данные для расчета  
   Application.Run "Solver.xla!SolverOk", "$E$4", 3, 0, "$G$7:$G$9"  
   Application.Run "Solver.xla!SolverAdd", "$G$7", 1, "$G$8"  
   'Application.Run "Solver.xla!SolverAdd", "$G$8", 3, "$G$9"  
   Application.Run "Solver.xla!SolverSolve"  
     
   Exit Sub  
EH:  
   MsgBox Err.Source & "~" & Err.Description  
End Sub
 
См. пример
 
Спасибо)  
Значит мне нужно себе скопировать код подходящего макроса, поменять ячейки на свои, а дальше?  
Почему-то не на вашем не на моём примере не получается(Помогите!...
 
У меня на моем примере получается, Вашего не вижу...  
До завтра!
 
Спасибо большое, разобралась)Всё получилось)
Страницы: 1
Читают тему
Наверх