Excel VBA Частичная блокировка листа и отсутствие возможности копирования, вставки, отмены - PullRequest
0 голосов
/ 08 апреля 2020

У меня проблема с блокировкой ячеек в Excel.

До сих пор я использовал этот код для всех моих листов

 Private Sub Worksheet_SelectionChange(ByVal target As Range)
 Const pw As String = "Secret"

 Dim rFormulaCheck As Range

 On Error Resume Next

 With target
 .Parent.Unprotect pw
 .Locked = False
 .FormulaHidden = False

If .Cells.Count = 1 Then
If .HasFormula Then
.Locked = True
.FormulaHidden = True
.Parent.Protect pw, , , , 1
End If

ElseIf .Count > 1 And .Count < 5 Then

 With .SpecialCells(xlCellTypeFormulas)
 .Locked = True
 .FormulaHidden = True
 .Parent.Protect pw, , , , 1
 End With

 End If

 End With

 On Error GoTo 0
 End Sub

, где я заблокировал первые 5 верхних строк. Я могу редактировать нижние, но нет возможности скопировать материал из некоторой ячейки на следующий лист (в аналогичное место). Опция отмены (Crtl + Z) также не работает. Как я могу изменить этот код?

Я также попытался установить некоторые условия здесь:

enter image description here

Но это не помогло.

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

1 Ответ

1 голос
/ 08 апреля 2020

Прежде чем защищать лист, определите, на какую область листа должна воздействовать защита.

Сначала выберите и щелкните правой кнопкой мыши угол и снимите флажок «Заблокировано» для всех ячеек в разделе защиты.

enter image description here

enter image description here

Затем выберите пять строк, которые вы хотите заблокировать, и отметьте Флажок «Заблокировано».

enter image description here

Теперь, когда вы защищаете свой лист, это должно влиять только на пять строк, которые вы выбрали для блокировки.

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