bash.im ithappens.me zadolba.li
1777

Кто там шагает не в ногу?

24 декабря 2009, 11:00

Писали мы как-то с другом макрос на VBA, призванный автоматизировать решение нехитрой экономической задачки в Excel. Макрос должен был разметить ячейки на рабочем листе, забить нужные формулы, прочитать введённые значения и запустить «Поиск решений» — задача, в общем-то, элементарная.

Набросали предварительную модель задачи, по-быстрому проверили её этим самым «Поиском решений» — работает, результаты правдоподобные. На той же модели так же наскоро прикинули будущий интерфейс и приступили к автоматизации.

Написали макрос — формулы вводит, размечает красиво, всё здорово. Дошли до программного пуска «Поиска решений» и застряли. Запускать запускает, а задача не решается. Excel паникует: «Ошибка в модели. Проверьте правильность значений в ячейках и ограничениях».

Проверили всё. Нашли пару незначительных ошибок, исправили — то же самое. Вернулись к нашей предварительной модели, запустили на всякий случай ещё раз «Поиск решений» — падает с той же ошибкой. Мы в шоке — раньше ведь считало?!

Думали. Еще думали. Матерились. Снова думали. Где-то через час в результате научного тыкания мышкой по экрану причина таки обнаружилась.

В погоне за красотой рабочего листа возникла необходимость объединить несколько ячеек, в том числе и с изменяемыми в процессе поиска решений значениями. Как оказалось, Excel просто не умеет работать таким образом — ему подавай только обособленные, индивидуальные ячейки. Поскольку интерфейс мы планировали на предварительной модельке уже после того, как проверили ее решаемость, то после прикидок она так и осталась с объединёнными ячейками. Посчитать ответ ещё раз Excel уже не смог и только слабо огрызался пояснениями, заложенными в него предусмотрительными разработчиками.