Как защитить имя листа не весь лист? - PullRequest
2 голосов
/ 15 декабря 2011

Мне нужно защитить имя листа, запретив

  • любое изменение имени листа или
  • удаляемый лист.

Это необходимо сделать без защиты всего листа с использованием параметров Protect Sheet или Protect Workbook.

Есть ли способ сделать это с VBA

Ответы [ 3 ]

1 голос
/ 25 декабря 2011
  1. Щелкните правой кнопкой мыши вкладку листа, которую вы хотите защитить
  2. Просмотреть код
  3. Скопируйте и вставьте код ниже

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

Код также назовет лист "NameOfSheet", когда лист деактивирован.Это обходной путь для предотвращения переименования листа

Private Sub Worksheet_Activate()
Application.CommandBars.FindControl(ID:=847).Enabled = False
End Sub

Private Sub Worksheet_Deactivate()
Application.CommandBars.FindControl(ID:=847).Enabled = True
Me.Name = "NameOfSheet"
End Sub

protect sheet1

0 голосов
/ 15 декабря 2011

Будет ли этот подход работать?

  1. Выберите все ячейки на листе, затем разблокируйте все ячейки с помощью «Блокировать». Клетки "(желтый фон замка становится белым).
  2. Введите имя листа в ячейке (фиксированной или именованной), затем заблокируйте ТОЛЬКО для этой ячейки («Блокировка ячеек», фон замка становится желтым).
  3. Тогда Защитите книгу, но разрешите все действия, кроме первого «Выбрать заблокированные ячейки».

    Пользователь может делать все, кроме выбора ячейки с именем листа (и удалять строки / столбцы).

  4. Теперь напишите VBA, чтобы сравнить фактическое имя листа с данными в защищенной именованной ячейке (или фиксированной ссылкой, например, A1).

  5. Запускайте этот скрипт либо при каждом изменении (возможно, слишком много), либо, по крайней мере, при закрытии Рабочая тетрадь.
  6. Пока имя листа всегда находится в одной и той же ячейке (например, A1), вы можете затем пройти по всем листам, сравнить их имя с данными в ячейке A1 и исправить имя листа, если требуется.
0 голосов
/ 15 декабря 2011

Не думаю, что ты можешь. Что вы можете сделать, вы можете сделать лист очень скрытым (доступным только из VBA), а в случае удаленного листа вы можете скопировать его и сделать копию видимой.

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