Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2012, 20:35   #1
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию Макрос для защиты ячеек по наличии в них данных

Всем добрый день. Есть один вопрос, самому что-то никак не разобраться.
Задача такая - есть защищенный лист, пользователь вводит в незащищенную ячейку знак "!", после чего эта ячейка автоматически становиться защищенной и пользователь уже не может удалить знак "!". Как это реализовать? Полагаю, без макросов тут не обойтись. Заранее спасибо всем откликнувшимся.
ru3000 вне форума Ответить с цитированием
Старый 22.02.2012, 20:47   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

правой кнопкой по ярлыку листа, "исходный текст"
скопируйте туда это:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Cells.Count > 1 Then Exit Sub
  ActiveSheet.Unprotect
  Target.Locked = Target <> ""
  ActiveSheet.Protect
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 22.02.2012 в 20:50.
IgorGO вне форума Ответить с цитированием
Старый 22.02.2012, 21:00   #3
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Спасибо, макрос прекрасно работает.
Только вот он срабатывает на любой вводимый знак, а хочется чтобы срабатывал именно на знак ! (восклицательный знак).
ru3000 вне форума Ответить с цитированием
Старый 22.02.2012, 21:50   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

однако...
исправте:
Target.Locked = Target <> ""
на:
Target.Locked = Target = "!"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.02.2012, 22:03   #5
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Спасибо еще раз. Действительно сильно помогли.
ru3000 вне форума Ответить с цитированием
Старый 22.02.2012, 22:15   #6
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Я еще с одним вопросом по теме. Если страница защищена паролем, то при выполнении вашего макроса каждый раз требуется вводить пароль. Без пароля же все работает на ура. Как можно научить макрос обойти этот момент, что бы он сам вводил пароль? Заранее еще раз спасибо.
ru3000 вне форума Ответить с цитированием
Старый 22.02.2012, 22:36   #7
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Сам нашел:
Код:
     
.Unprotect (ПАРОЛЬ)
.Protect (ПАРОЛЬ)
IgorGO, спасибо еще раз.
ru3000 вне форума Ответить с цитированием
Старый 22.02.2012, 22:40   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

))) а чуть-чуть справку почитать слабо?
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Cells.Count > 1 Then Exit Sub
  ActiveSheet.Unprotect ("ВашПароль")
  Target.Locked = Target = "!"
  ActiveSheet.Protect ("ВашПароль")
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.02.2012, 22:41   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Сам нашел:
это универсальный и самый правильный подход.
поздравляю!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 07.10.2022, 12:59   #10
Stabilitron
Новичок
Джуниор
 
Регистрация: 07.10.2022
Сообщений: 2
По умолчанию

Классный макрос, подскажите ещё такой один момент, а если мне надо только в двух или трёх определенных ячейках блокировка после ввода данных? А остальные ячейки не трогались чтобы, как модернизировать можно скрипт этот? )
Stabilitron вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для объединения ячеек Excel wadzik Microsoft Office Excel 12 24.10.2017 21:32
Заполнение списка по исходным данным при наличии пустых ячеек нгв1607 Microsoft Office Excel 2 04.08.2011 10:27
Макрос для раскраски ячеек pautina13 Microsoft Office Excel 2 09.06.2011 11:39
Макрос для объединения одинаковых ячеек Internal2 Microsoft Office Excel 2 05.11.2009 14:00
макрос - подсчитать для каждой строки кол-во ячеек с «+», кол-во ячеек с «-» Vadim_abs Microsoft Office Excel 36 14.07.2009 12:08