Я пытаюсь выяснить, как скрыть заблокированные строки с помощью кода VBA. Предположим, у меня есть 3 защищенных паролем листа, со всеми заблокированными ячейками и UserInterfaceOnly: = True.Скрытие заблокированных строк на защищенном листе, отличном от активного листа
Моя кнопка ActiveX находится на Sheet1. Я хочу скрыть строки («1: 2») во всех листах (Sheet1, Sheet2 и Sheet3). Тем не менее, код работает нормально только для Листа, кнопка включена, Sheet1. Когда дело доходит до сокрытия строк на Sheet2/Sheet3, Excel говорит, что я не могу скрыть этот диапазон, потому что он заблокирован. Однако он также заблокирован на Sheet1, но он просто работает и скрывает/скрывает строки 1: 2.
Я уже сделал решение, сняв защиту с этих двух других листов прямо перед тем, как спрятать/развернуть строки, а затем снова защитить их. Это, однако, не выглядит хорошо для меня и заставляет Excel перемещаться между всеми этими листами, которые требуют некоторого (очень мало) времени и «вспышек» при этом. Это нежелательно для меня. Код выглядит следующим образом:
Rows("1:2").EntireRow.Hidden = True
Sheet2.Unprotect Password:=pwd
Sheet2.Rows("1:2").EntireRow.Hidden = True
Sheet2.Protect Password:=pwd, AllowFormattingCells:=True, UserInterfaceOnly:=True
Sheet3.Unprotect Password:=pwd
Sheet3.Rows("1:2").EntireRow.Hidden = True
Sheet3.Protect Password:=pwd, AllowFormattingCells:=True, UserInterfaceOnly:=True
Как вы можете видеть, я не Лист1 снятия защиты, и это работает.
Есть ли способ достичь этого или он будет работать только на листе, на котором включена кнопка ActiveX? Кроме того, Я не хочу использовать AllowFormatingRows: = True.
Благодаря
Вы можете попробовать это, я не уверен, что он работает. Добавьте переменную рабочего листа ('Dim WS as WorkSheet'), а затем пропустите все листы (« Для каждого WS в этой книге ») и поместите оператор if внутри цикла (' If Not WS = ActiveWorkSheet Then'), и вы введите там свой код. Если активный рабочий лист всегда один и тот же, вы можете сделать оператор if следующим образом: «Если имя рабочей таблицы WS.name <>» появляется здесь «Тогда». Попробуйте это и дайте нам короткое обновление, если оно будет работать. – RobK