Как сделать скрытые строки недоступными для редактирования / копирования в VBA?

#vba #edit #hidden #rows #autofilter

#vba #Редактировать #скрытые #строки #автофильтр

Вопрос:

Макрос скрывает строки. После того, как строки скрыты, пользователи могут копировать, редактировать и удалять блоки ячеек / строк. Когда пользователи выбирают диапазон, содержащий скрытые ячейки, скрытые ячейки, к сожалению, также выбираются, поэтому все действия выполняются и для скрытых ячеек.

Можно ли скрыть строки таким образом, чтобы они не участвовали в действиях, выполняемых на видимой части листа (ведут себя как скрытые строки после автофильтра)?

Чтобы скрыть строки, я использую этот код:

  Rows(i).EntireRow.Hidden = True
  

Ответ №1:

Об этом я не знаю. Вероятно, вам нужно будет подумать о защите рабочего листа и блокировке ячеек, которые вы не хотите изменять / копировать.

Комментарии:

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

2. Возможно, но это, вероятно, будет хакерским. У вас есть причина, по которой вы хотите избежать защиты листа? Что определяет, какие строки вы скрываете, и можете ли вы использовать автофильтр вместо скрытия строк?

3. В принципе, я хочу воспроизвести функциональность автофильтра. Встроенный автофильтр позволяет фильтровать только по двум значениям в пользовательских фильтрах. Я хочу создать расширение, в котором пользователи могут выполнять, создавать, редактировать и хранить сложные динамические фильтры. Что касается защиты листа — я должен попробовать, но, на мой первый взгляд, это не поможет сделать скрытые строки «недоступными для копирования».

4. Я думаю, что они будут «недоступны для копирования», так как как вы будете копировать строки, если вы не можете их выбрать?