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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2015, 16:49   #1
Igemon666
Новичок
Джуниор
 
Регистрация: 20.11.2014
Сообщений: 2
По умолчанию Запуск макроса при нахождении активной ячейки в указанном диапазоне (защита умной таблицы)

Имеется «умная таблица» (нужна именно она, т.к. столбцов гораздо больше; нужна работающая функция авторасширения). Файл прилагаю. Возможен ли макрос, который будет:
- отключать защиту листа (пароль 1234), если активная ячейка находится в диапазоне «ДиапРП» (лист «Учет РП», A3:A9),
- включать защиту листа (пароль 1234), если активная ячейка находится вне диапазона «ДиапРП» (лист «Учет РП», A3:A9).
Т.е. формулы в нужных столбцах умной таблицы будут защищены, а для расширения таблицы «вниз» пользователю будет достаточно сделать активной ячейку А10 (в данном примере), заполнить ее, и стандартным способом расширить «вниз» умную таблицу. Как только он переходт к другому столбцу – защита включается снова.
Вроде бы можно использовать «if intersect(activecell, ДиапРП) is nothing then …», но знаний не хватает.
Заранее спасибо.
Вложения
Тип файла: xlsx _Учет сотр.xlsx (33.6 Кб, 24 просмотров)
Igemon666 вне форума Ответить с цитированием
Старый 30.10.2015, 09:48   #2
Igemon666
Новичок
Джуниор
 
Регистрация: 20.11.2014
Сообщений: 2
По умолчанию

Ответили в другом форуме, поэтому отвечаю сам, может кому пригодится.
Если активная ячейка находится в пределах указанного диапазона (у меня это ячейки в столбце А, начиная с 3-й, имя диапазона "ДиапазонРП"), то защита неактивна, и соответственно доступно стандартное автозаполнение "умной таблицы" вниз, удаление строк и пр.
Если же пользователь перешел на ячейки в иных столбцах (вне указанного в макросе диапазона) - то автоматически включается защита листа (с указанным в макросе паролем), при этом возможность редактирования пользователем данных в ячейках определяется установленному Вами заранее формату ячейки (защищаемая либо нет).
Т.е. предварительно перед включением макроса необходимо установить формат "защищаемая ячейка" только на тех столбцах/ячейках "умной таблицы", которые необходимо защитить от изменений (обычно формулы).
Макрос вставляется в модуль листа:

Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("ДиапазонРП") 'диапазон с именем, имя - строка, берем в кавычки
If Intersect(KeyCells, Target) Is Nothing Then 'если активная ячейка находится вне диапазона "ДиапазонРП", то...
ActiveSheet.Protect Password:="1234" 'включить защиту листа с паролем "1234"
Else 'Если нет, то...
ActiveSheet.Unprotect Password:="1234" 'отключить защиту листа с паролем "1234"
End If
End Sub
Igemon666 вне форума Ответить с цитированием
Старый 30.10.2015, 10:32   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск макроса после изменения содержимого ячейки amd3000 Microsoft Office Excel 5 27.06.2011 16:52
запуск макроса при изменении ячейки Бонни Microsoft Office Excel 2 26.04.2010 11:44
выбор активной ячейки при выделении в listbox-e serafim09 Microsoft Office Excel 5 25.03.2010 10:37
Не во всём указанном диапазоне работает формула. oleg_sh Microsoft Office Excel 2 02.03.2010 13:00
адрес не активной ячейки при вызове функции skachkovgd Microsoft Office Excel 4 06.12.2007 09:50