У меня есть фрагмент кода 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)
имеет установленное форматирование ячеек, поэтому ячейки не блокируются и не скрываются.
Когда рабочий лист не защищен, строка специальных ячеек правильно возвращает диапазон пустых ячеек, однако, когда защищенные специальные ячейки всегда выдают ошибки, как будто пустых ячеек не найдено.
Вся помощь приветствуется.