Страницы: 1
RSS
Получить адрес диапазона защищённых ячеек на листе
 
Приветствую, коллеги.

Столкнулся с ситуацией, когда макросом надо получить список диапазонов всех защищённых ячеек на листе, без перебора ячеек в цикле.
Лист может быть большой, защита может стоять на нескольких отдельных диапазонах (отдельные ячейки, диапазоны, столбцы), ячейки могут быть пустые или заполненные.
Задача: в переменную считать адрес всех этих диапазонов, как это позволяет делать, например, SpecialCells
res = cells.SpecialCells(xlCellTypeConstants).Address

Для чего нужно: на листе защищены часть ячеек, но надо временно поставить защиту на весь лист, а потом снять защиту, но чтобы ранее защищённые ячейки остались защищены.

В объектной модели Excel ничего такого не нашёл. Есть идеи?

<добавлено>
Нагуглил вариант поиска (Cells.Find) по формату ячейки, там можно найти защищённые ячейки, - но когда защищён столбец целиком,
всё это дело виснет, - т.к. видно, что Excel в этом случае перебирает отдельные ячейки
(пишет, что найдено 1048593 ячейки, - и висит 5 минут, т.к. не может сразу отобразить результаты поиска)
Да и не очень понятно, как поиском найти и пустые и заполненные ячейки одновеременно
Изменено: Игорь - 14.11.2018 21:53:00
 
Игорь, не знаю поможет ли, УФ отрабатывает =CELL("prodect") на ура, может это использовать сможете.  
По вопросам из тем форума, личку не читаю.
 
Цитата
...надо временно поставить защиту на весь лист, а потом снять защиту, но чтобы ранее защищённые ячейки остались защищены.
Как вариант, можно запоминать форматы (включая защиту) ячеек контролируемого диапазона на вспомогательном листе, а потом восстанавливать их на рабочем листе. Например:
Запомнить:
Код
Sheets(1).[A1:Z100].Copy
Sheets(2).[A1].PasteSpecial xlPasteFormats
Восстановить:
Код
Sheets(2).[A1:Z100].Copy
Sheets(1).[A1].PasteSpecial xlPasteFormats
Естественно, что между этими действиями не подразумевается добавление (удаление) строк (столбцов), изменение формата и пр.
Изменено: SAS888 - 15.11.2018 07:19:25
Чем шире угол зрения, тем он тупее.
 
Доброе время суток.
Вариант по следам SAS888 и Fast method for determining unlocked cell range
 
Всем большое спасибо за ответы
Вариант на базе xlPasteFormats вполне подходит.
Страницы: 1
Наверх