Excel VBA: использование специальных ячеек не работает, если рабочий лист защищен - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть фрагмент кода Excel VBA, который работает нормально, если рабочая таблица не защищена, но не защищена.Я читал предыдущие подобные запросы, но не думаю, что они применимы в этом случае - предложенные исправления были неприменимы или требовали многократного снятия защиты / повторной защиты листа, которого я хотел бы избежать, если это возможно.

Мой код выглядит следующим образом:

Dim NonEmptyCells As Range
Dim Cell As Range

On Error Goto Fin
Set NonEmptyCells = Range("D3:H6").SpecialCells(xlCellTypeBlanks)

For Each Cell In NonEmptyCells 

    '   do stuff with cell

Next Cell

Fin:
On Error GoTo 0

Использование 'On Error' - избегать цикла при обнаружении нуля пустых ячеек.

Range(D3:H6) имеет установленное форматирование ячеек, поэтому ячейки не блокируются и не скрываются.

Когда рабочий лист не защищен, строка специальных ячеек правильно возвращает диапазон пустых ячеек, однако, когда защищенные специальные ячейки всегда выдают ошибки, как будто пустых ячеек не найдено.

Вся помощь приветствуется.

1 Ответ

0 голосов
/ 23 ноября 2018

Вы можете использовать Userinterfaceonly, когда установлена ​​защита.Макросы будут работать, лист будет защищен от изменений, внесенных самим пользователем.

В разделе ThisWorkbook-module:

Private Sub Workbook_Open()
Worksheets("Sheet1").Protect Password:="yourPassword", UserInterFaceOnly:=True
End Sub

настройте свой пароль и имя листа (убедитесь, чтооткрытие книги - это событие, запущенное при запуске макроса, т.е. повторное его открытие)

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