Приветствую, коллеги.
Столкнулся с ситуацией, когда макросом надо получить список диапазонов всех защищённых ячеек на листе, без перебора ячеек в цикле.
Лист может быть большой, защита может стоять на нескольких отдельных диапазонах (отдельные ячейки, диапазоны, столбцы), ячейки могут быть пустые или заполненные.
Задача: в переменную считать адрес всех этих диапазонов, как это позволяет делать, например, SpecialCells
res = cells.SpecialCells(xlCellTypeConstants).Address
Для чего нужно: на листе защищены часть ячеек, но надо временно поставить защиту на весь лист, а потом снять защиту, но чтобы ранее защищённые ячейки остались защищены.
В объектной модели Excel ничего такого не нашёл. Есть идеи?
<добавлено>
Нагуглил вариант поиска (Cells.Find) по формату ячейки, там можно найти защищённые ячейки, - но когда защищён столбец целиком,
всё это дело виснет, - т.к. видно, что Excel в этом случае перебирает отдельные ячейки
(пишет, что найдено 1048593 ячейки, - и висит 5 минут, т.к. не может сразу отобразить результаты поиска)
Да и не очень понятно, как поиском найти и пустые и заполненные ячейки одновеременно
Столкнулся с ситуацией, когда макросом надо получить список диапазонов всех защищённых ячеек на листе, без перебора ячеек в цикле.
Лист может быть большой, защита может стоять на нескольких отдельных диапазонах (отдельные ячейки, диапазоны, столбцы), ячейки могут быть пустые или заполненные.
Задача: в переменную считать адрес всех этих диапазонов, как это позволяет делать, например, SpecialCells
res = cells.SpecialCells(xlCellTypeConstants).Address
Для чего нужно: на листе защищены часть ячеек, но надо временно поставить защиту на весь лист, а потом снять защиту, но чтобы ранее защищённые ячейки остались защищены.
В объектной модели Excel ничего такого не нашёл. Есть идеи?
<добавлено>
Нагуглил вариант поиска (Cells.Find) по формату ячейки, там можно найти защищённые ячейки, - но когда защищён столбец целиком,
всё это дело виснет, - т.к. видно, что Excel в этом случае перебирает отдельные ячейки
(пишет, что найдено 1048593 ячейки, - и висит 5 минут, т.к. не может сразу отобразить результаты поиска)
Да и не очень понятно, как поиском найти и пустые и заполненные ячейки одновеременно
Изменено: - 14.11.2018 21:53:00