Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос для автоматической защиты ячеек в строке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос для автоматической защиты ячеек в строке (Макросы/Sub)
Макрос для автоматической защиты ячеек в строке
operkote Дата: Среда, 13.08.2014, 20:19 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте. Помогите, пожалуйста, решить проблему.

Создаю шаблон для ведения отчетности по одному проекту. Ситуация такая: имеется строка, в ячейки которой заносится та или иная информация. В некоторой части строки есть ячейка, которой по формуле после определенных условий заполнения остальных ячеек присваивается значение "Обработано". Появилась необходимость защищать от случайного изменения все ячейки строк, содержащих "обработанную" ячейку. Я так понял, что иного способа, кроме как сделать это защитой листа с определенной настройкой параметров защиты ячеек - нет.

Иными словами, идея какая: изначально со всех ячеек снята защита, но защита всего листа (без пароля) включена. Когда на одной из строк ключевая ячейка получает значение "Обработано", должен сработать макрос, который:

1. Снимает защиту листа
2. Ставит галочку "защищаемая ячейка" на всех ячейках этой строки
3. Включает защиту листа

Причем, очевидно, на втором пункте также необходимо сохранять статус защищаемой ячейки на всех ранее защищенных ячейках.

Мои познания в макросах почти нулевые, поэтому прошу вас о помощи: напишите, пожалуйста, соответствующий макрос. Я прочитал, что можно делать так, чтобы макрос срабатывал при заполнении определенной ячейки - в идеале хотелось бы сделать именно так. Ячейка получает значение "Обработано", а затем вся эта строка становится защищенной.

Заранее огромное спасибо.
К сообщению приложен файл: 8907714.xls (29.0 Kb)
 
Ответить
СообщениеЗдравствуйте. Помогите, пожалуйста, решить проблему.

Создаю шаблон для ведения отчетности по одному проекту. Ситуация такая: имеется строка, в ячейки которой заносится та или иная информация. В некоторой части строки есть ячейка, которой по формуле после определенных условий заполнения остальных ячеек присваивается значение "Обработано". Появилась необходимость защищать от случайного изменения все ячейки строк, содержащих "обработанную" ячейку. Я так понял, что иного способа, кроме как сделать это защитой листа с определенной настройкой параметров защиты ячеек - нет.

Иными словами, идея какая: изначально со всех ячеек снята защита, но защита всего листа (без пароля) включена. Когда на одной из строк ключевая ячейка получает значение "Обработано", должен сработать макрос, который:

1. Снимает защиту листа
2. Ставит галочку "защищаемая ячейка" на всех ячейках этой строки
3. Включает защиту листа

Причем, очевидно, на втором пункте также необходимо сохранять статус защищаемой ячейки на всех ранее защищенных ячейках.

Мои познания в макросах почти нулевые, поэтому прошу вас о помощи: напишите, пожалуйста, соответствующий макрос. Я прочитал, что можно делать так, чтобы макрос срабатывал при заполнении определенной ячейки - в идеале хотелось бы сделать именно так. Ячейка получает значение "Обработано", а затем вся эта строка становится защищенной.

Заранее огромное спасибо.

Автор - operkote
Дата добавления - 13.08.2014 в 20:19
ikki Дата: Четверг, 14.08.2014, 00:21 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
так?
К сообщению приложен файл: 6057774.xls (37.5 Kb)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениетак?

Автор - ikki
Дата добавления - 14.08.2014 в 00:21
operkote Дата: Четверг, 14.08.2014, 00:27 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Вроде бы все работает как надо - попробую перенести на свою таблицу сейчас.

Большое спасибо.


Сообщение отредактировал operkote - Четверг, 14.08.2014, 00:28
 
Ответить
СообщениеВроде бы все работает как надо - попробую перенести на свою таблицу сейчас.

Большое спасибо.

Автор - operkote
Дата добавления - 14.08.2014 в 00:27
operkote Дата: Четверг, 14.08.2014, 00:46 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Единственный вопрос: как сделать так, чтобы еще и оставить возможность при защищенном листе применять автофильтр и сортировку?
 
Ответить
СообщениеЕдинственный вопрос: как сделать так, чтобы еще и оставить возможность при защищенном листе применять автофильтр и сортировку?

Автор - operkote
Дата добавления - 14.08.2014 в 00:46
Rioran Дата: Четверг, 14.08.2014, 09:13 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
operkote, здравствуйте.

Для метода Protect можете использовать аргумент AllowFiltering. В макросе Ikki это будет выглядеть так:

[vba]
Код
Private Sub Worksheet_Calculate()
      Me.Unprotect
         For i = 3 To Cells(Rows.Count, "c").End(xlUp).Row ' 3 - потому что пропускаем шапку таблицы
             If Cells(i, 3) = "Обработано" Then Cells(i, 1).Resize(, 4).Locked = True
          Next
      Me.Protect AllowFiltering:=True
End Sub
[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Четверг, 14.08.2014, 09:34
 
Ответить
Сообщениеoperkote, здравствуйте.

Для метода Protect можете использовать аргумент AllowFiltering. В макросе Ikki это будет выглядеть так:

[vba]
Код
Private Sub Worksheet_Calculate()
      Me.Unprotect
         For i = 3 To Cells(Rows.Count, "c").End(xlUp).Row ' 3 - потому что пропускаем шапку таблицы
             If Cells(i, 3) = "Обработано" Then Cells(i, 1).Resize(, 4).Locked = True
          Next
      Me.Protect AllowFiltering:=True
End Sub
[/vba]

Автор - Rioran
Дата добавления - 14.08.2014 в 09:13
operkote Дата: Четверг, 14.08.2014, 16:14 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 0 ±
Замечаний: 0% ±

Спасибо за помощь.
 
Ответить
СообщениеСпасибо за помощь.

Автор - operkote
Дата добавления - 14.08.2014 в 16:14
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос для автоматической защиты ячеек в строке (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!