Добрый день, друзья. Задача передо мной стоит такая: сделать файл, в который пользователи будут вносить вводные данные и получать какой-то результат. При этом ячейки, в которые они вносят данные, должны быть защищены от изменения формата (юзеры любят копипастить из ворда, после чего файл превращается в новогоднюю елку), но должна оставаться возможность менять значение в ячейках. Стандартная блокировка такого не позволяет, она блокирует возможность вносить любые изменения в значения ячеек. Я долго думал, как реализовать данный функционал, решил следующим образом: при любом изменении листа макрос отслеживает точку изменения (что уже само по себе не так просто и в некоторых случаях вообще невозможно) и форматирует "по чистовой", то есть если пользователь "загадил" формат, макрос его восстановит, а также восстанавливает стертые формулы. Это происходит сотые доли секунды. практически незаметно, но проблема в том, что после того как файл и функционал разросся, макрос стал очень тяжело редактируемым. Учитывая, что там еще прикручена скл база прайсов и прочие фичи, а также я вообще не программист, всего лишь любитель, все это поддается редактированию с огромным трудом. Кстати, условное форматирование по той же причине не могу использовать, т.к. у пользователя должна остаться возможность удалять, вставлять строки, делать другие действия, которые также его сбивают. В общем из всех стандартных вариантов, которые могут вам придти в голову, 90% я уже наверняка попробовал. Пишу на случай вопросов вроде: "Зачем форматировать ячейку макросом, ведь есть условное форматирование". Прилагаю файл (сильно его порезал, ибо не влезал), на листе "спецификация" предмет вопроса.
Плюс из за такого подхода возникают плавающие глюки самого экселя с форматированием (когда, например, я не могу изменить тип линии определенной ячейки, только если выделю диапазон вокруг нее, а если все же пытаюсь, эксель вылетает с ошибкой, ну и прочие радости), т.к. файл юзают и на 2003 и на 2007 экселе и обмениваются ими - в этом причина подобных глюков.
Мне предстоит все переделать, но идей как реализовать такую задачу у меня пока нет. Возможно, кто-то сможет что-нибудь придумать. Заранее спасибо.
Очень даже удобна: данные никогда не промажут и попадут точно в цель )) А через некоторое время пользователи уже с ужасом вспоминают, как вводили данные непосредственно в ячейки, перемещаясь по листу