Возможно кому-то это будет и не интересно, но наверное всё-таки найдутся и те, кому эта информация будет полезной. Речь пойдёт о цикле статей по работе в Office Excel 2007 + офисный VBA (Visual Basic Application). Сразу отмечу, что Excel + VBA я стал изучать не так давно, и по мере работы у меня возникали различные вопросы и трудности. Сейчас эти “трудности” превратились лишь в весёлые воспоминания =) Я придерживаюсь принципа “Глупый человек учиться на своих ошибках, Умный – на чужих” и поэтому я решил помочь Вам не допускать тех же ошибок, с которыми пришлось сталкиваться мне. Надеюсь предложенная информация пригодиться новичкам, а профи не будут меня сильно бить палками. Ну и на последок, мне не хотелось бы чтобы все эти статьи были в стили монолог – автора, поэтому буду рад пообщаться с вами в комментариях, вопросы приветствуются и поощряются(если у вас есть блог, то в посте-ответе будет стоять ссылка на ваш сайт). Ладно, хватит “лить воду”, пора приступить к первому совету, думаю вы уже из названия топика догадались, что речь пойдёт о Защите ячеек от изменений.
В чём же может возникнуть трудность с защитой ячеек в Excel. Во-первых во вкладке “рецензирование” в меню “изменения” есть кнопка “защитить лист”.
Отметим галочку на “защитить лист и содержимое защищаемых ячеек”, далее введём пароль, остальные checkbox’ы оставим без галочек, нажмём “OK”, потом подтвердим пароль и вот все ячейки листа стали заблокированными. Отмечу, что по умолчанию в Excel при создание нового листа, у всех ячеек в свойствах “формат ячеек” – “защита” отмечено “защищаемая ячейка”. Так что если Вы захотите, чтобы какая-то ячейка была не защищенная, т.е. была доступна для изменений, то всего лишь уберите эту галочку. После этого и возникнут трудности, во всяком случае у меня возникли…
Итак, у меня была таблица, в которой находились ячейки доступные для изменений, а также ячейки в которых информация вычислялась автоматически (к примеры сумма чисел) – и они должны быть защищены от изменений. В принципе в этом нет ничего трудного, с одних ячеек(доступных для ввода данных) убираем ”защищаемая ячейка”, на других(вычисления в которых происходят автоматически) оставляем. Жмём “защитить лист” и радуемся результату.
Изменяя значения в ячейках E7, F7,G7 в ячейке M7(нельзя выделить) вычисляется их сумма. НО…не всё так просто. Если в защищенных ячейках значение вычисляется по стандартным формулам Excel из меню “формулы”, то проблем не будет, а вот если вы написали макрос на VBA для вычисления более сложных значений, то при запуске этого макроса у вас появится ошибка
Что же делать в этом случае? Первое что мне пришло в голову, сейчас многие из вас будут смеяться =) это оставить все ячейки незащищенными, а далее над ячейками значения в которых вычисляются автоматически разместить Вставка – Фигуры – Прямоугольник..в свойствах которого установить Прозрачность 100%… Таким образом значения в ячейках будут видны, но наведя на них курсор мышки Вы не сможете их выделить и изменить… Минус такой “фишки” в том, что продвинутый пользователь “может догадаться” воспользоваться клавишами “стрелки” на клавиатуре, и попав в ячейку, которую мы “прикрыли” прозрачным прямоугольником, изменить в ней значения. Этого как раз нам свами больше всего и не хотелось…
Выход из данной ситуации:
Ячейки, информация в которых должна быть не доступна для изменений, мы оставляем защищенными. Далее в макросе, который производит вычисление по хитрой формуле, прописываем Worksheets(”Имя листа”).Unprotect Password:=”пароль” …текст макроса… Worksheets(”Имя листа”).Protect Password:=”пароль”
Напоследок пример такого макроса:
Private Sub CommandButton1_Click()
Worksheets(”Gualanland”).Unprotect Password:=”gualan”
Range(”A3″).Value = Range(”A1″).Value * Val(Range(”A2″).Value)
Worksheets(”Gualanland”).Protect Password:=”gualan”
End Sub
»» Выбор хостинга это такой же сложный процесс, как и подбор домена для сайта. Если вам нужен надежный и качественный хостинг, то лучше всего спросить совета у друзей или почитать отзывы известных людей на блогах и форумах, главное чтоб они не были заинтересованны в пиаре какого-то конкретного ресурса.
© Блог гордого владельца говносайтов – автор текста gualan.




Gualan!!!
Полный респект и уважуха.Вы-прелесть.Измучилась вся – искала решение проблемы с защитой листа “от дурака”.Вы спасли мои формулы от ежедневного”убийства”.Огромное СПАСИБО.Теперь у меня работают макросы и ячейки защищены.Просто СУПЕР!Еще раз спасибо!
Большое пожалуйста.. рад что помогло!
Thanks////////////////// Это ооооооооооооооочень нужная инфа. Ещё раз спасибо
помогло, легко и просто
спасибо, потом посмотрю как это работает в ВБА
Поставил но после применения макроса ячейки становятся незащищенными ПРОБЛЕМА !!!
Oleg, а вы точно в последней строчке макроса не забыли Worksheets(”имя вашего листа”).Protect Password:=”ваш пароль”??
Спасибо за статью выручил!
Спасибо за совет!
Восхищаюсь Вами, какая Вы умница!!! Наконец я защитила свои формулы. Дай Вам Бог здоровья!
Штука прикольная (и автору спасибо, вопрос часто есть актуальный), но есть одно но: при долгом выполнении макроса комбинацией ctrl+break можно его прервать и таким образом оставить лист незащищенным. Лучше распароливать и защищать лист на небольших участках кода. ИМХО
Kafer, спасибо за замечание, как-то я об этом и не подумал
Большое спасибо, очень помогло.