
Дизайн-проект задачи
Проект состоит из двух листов:
Лист1:
Как уже было сказано, кнопки запускают соответствующий макрос.
Примечание:
В ячейках переменных, где отображены нули, при желании можно увеличить разрядность, чтобы убедиться в работоспособности программы (подбор всех переменных), однако нам в данном случае не требуется высокая точность, поэтому трех знаков после запятой достаточно.
Лист2:
Аналогично с Листом1, кнопки запускают соответствующие макросы. Также здесь намеренно не показана ячейка целевой функции, так как задача состоит в решении системы, то есть в нахождении неизвестных (столбец Значения).
Нули в уравнении в формульной записи, напротив текстовой формы, доказывают, что значения подобраны верно.
Данный пример показывает работоспособность программы с нелинейными системами уравнений.
Текст макросов
Так как макросы второго листа аналогичны первому, то здесь приведу пример лишь макросов первого листа.
Sub Макрос1()
Range("Q14:U16").Select
SolverOk SetCell:="$Q$14", MaxMinVal:=2, ValueOf:=0, ByChange:="$A$16:$J$25", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOptions MaxTime:=0, Iterations:=0, Precision:=0.000001, Convergence:= _
0.0001, StepThru:=False, Scaling:=True, AssumeNonNeg:=True, Derivatives:=1
SolverOptions PopulationSize:=100, RandomSeed:=0, MutationRate:=0.075, Multistart _
:=False, RequireBounds:=True, MaxSubproblems:=0, MaxIntegerSols:=0, _
IntTolerance:=1, SolveWithout:=False, MaxTimeNoImp:=30
SolverOk SetCell:="$Q$14", MaxMinVal:=2, ValueOf:=0, ByChange:="$A$16:$J$25", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$Q$14", MaxMinVal:=2, ValueOf:=0, ByChange:="$A$16:$J$25", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
End Sub
Sub Макрос2()
Range("Q14:U16").Select
Selection.ClearContents
Range("A16:J25").Select
Selection.ClearContents
Range("Q14:U16").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-11]C[-5]:R[-2]C[4])"
End Sub
Sub Макрос3()
Sheets("Лист2").Select
End Sub
Функции, выполняемые данными макросами, оговаривались выше: расчет (подбор), очистка ячеек, переход на другой лист.
Заключение
В ходе курсовой работы был подробно изучен метод Поиска решения и его использование в макросах. Важно отметить, что по умолчания в Excel макросы не работают с Поиском решения. Для корректной работы и избежания ошибок необходимо зайти в код какого-либо из макросов, остановить запущенный макрос квадратной кнопкой Reset. Далее зайти на вкладку Tools, открыть References и поставить галочку напротив Solver. Нажать OK и выйти. После данной процедуры проблем взаимодействия макросов с надстройкой Поиск решения у меня не возникло.
Я посчитал лишним прикреплять к моей курсовой работе руководство работы, так как она оснащена наглядным удобным интерфейсом, поэтому даже у неопытных пользователей не возникнет вопросов по ее использованию.
Данная работа дала мне возможность углубить свои навыки работы в среде VBA Excel, а также позволила освежить знания по работе с функциями Excel и подбором переменных через надстройку Поиск решения.