Як хтось вище вже згадав, ця проблема вирішується використанням осередку в якості змінної. Зрештою, змінна - це просто контейнер певного типу. Ви так само можете під неї виділити певну комірку і, замість того щоб привласнювати значення змінної в коді, привласнювати значення осередку. Якщо у вас, скажімо, 30 кроків за часом і на кожному кроці вам незалежно потрібно оптемізіровать 10 коефіцієнтів (оптимізація дебітів свердловин, наприклад), то ви можете виділити 10 осередків для Солвер + 1 осередок для оптимизируемого значення і в коді пов'язувати ці осередки з осередками потрібного рядка таблиці, яка оптимізується. В даному випадку Солвер буде тупо міняти значення в цих осередках, а вони будуть відображатися в таблиці і відпрацьовуватися як потрібно (Лукапа, формули, і т.д.). Закінчили з одним рядком, перекинули посилання і заново повторили.
![Прикручування solver а в vba, програмне забезпечення (solver) Прикручування solver а в vba, програмне забезпечення](https://images-on-off.com/images/149/prikruchivaniesolveravvbaprogrammnoeobes-b2049717.png)
Колеги, хочу повернутися до питання прикручування Солвер.
Необхідно викликати процедуру в процесі вирішення Solver, щоб значення в оптимізується осередку порахувати.
При виклику Solver в VBA є в опціях SolverOptions ключ StepThru. Він дозволяє в підсумку викликати макрос для обробки подій, де ніби як можна прописати свою функцію.
Є у кого досвід вирішення такого завдання?
![Прикручування solver а в vba, програмне забезпечення (solver) Прикручування solver а в vba, програмне забезпечення](https://images-on-off.com/images/149/prikruchivaniesolveravvbaprogrammnoeobes-b2049717.png)
Михвей, добрий день!
SolverOk SetCell: = Cells (a, b), MaxMinVal: = 3, ValueOf: = 0, ByChange: = Cells (c, d), Engine: = 1, EngineDesc: = "GRG Nonlinear"