Запретить пользователю редактирование ячейки и ошибка нехватки места в стеке - PullRequest
0 голосов
/ 22 октября 2018

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

Я получаю ошибку времени выполнения "Out of stack space", используя приведенные ниже коды.Я просто публикую частичные коды здесь, поскольку они представляют собой слишком много строк кодов для размещения здесь.

Кажется, что я могу защитить только ячейки от строки 1 до строки 95. Кто-то может помочь?

Есть ли лучший способ выполнить задачу, которую я пытаюсь выполнить?

Спасибо.

Код:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Protection for the header fields
If Target.Address = "$A$1" Or Target.Address = "$B$1" Or Target.Address = "$C$1" Or Target.Address = "$D$1" Or Target.Address = "$E$1" Or Target.Address = "$L$1" Then Target.Offset(1, 0).Select
If Target.Address = "$A$2" Or Target.Address = "$C$2" Or Target.Address = "$E$2" Or Target.Address = "$F$2" Then Target.Offset(1, 0).Select
If Target.Address = "$A$3" Or Target.Address = "$B$3" Or Target.Address = "$C$3" Or Target.Address = "$D$3" Or Target.Address = "$E$3" Then Target.Offset(1, 0).Select
If Target.Address = "$F$3" Or Target.Address = "$G$3" Or Target.Address = "$H$3" Or Target.Address = "$I$3" Or Target.Address = "$J$3" Or Target.Address = "$K$3" Or Target.Address = "$L$3" Then Target.Offset(1, 0).Select


If Target.Address = "$A$4" Or Target.Address = "$C$4" Or Target.Address = "$D$4" Or Target.Address = "$L$4" Then Target.Offset(1, 0).Select
If Target.Address = "$F$4" And [$L$2].Value <> "Oph_Phase II_POC" Then Target.Offset(1, 0).Select

If Target.Address = "$A$5" Or Target.Address = "$C$5" Or Target.Address = "$C$5" Or Target.Address = "$F$5" Or Target.Address = "$G$5" Or Target.Address = "$H$5" Or Target.Address = "$I$5" Then Target.Offset(1, 0).Select

'Protection for row # 6
If Target.Address = "$A$7" Or Target.Address = "$C$7" Or Target.Address = "$D$7" Or Target.Address = "$E$7" Or Target.Address = "$F$7" Or Target.Address = "$G$7" Then Target.Offset(1, 0).Select

'Protection for row # 7
If Target.Address = "$A$6" Or Target.Address = "$B$6" Or Target.Address = "$C$6" Or Target.Address = "$D$6" Or Target.Address = "$E$6" Or Target.Address = "$F$6" Or Target.Address = "$G$6" Then Target.Offset(1, 0).Select


'Protection for row # 8
If Target.Address = "$A$8" Or Target.Address = "$B$8" Or Target.Address = "$C$8" Or Target.Address = "$D$8" Or Target.Address = "$E$8" Or Target.Address = "$F$8" Or Target.Address = "$G$8" Then Target.Offset(1, 0).Select

'Protection for row # 9
If Target.Address = "$F$9" Or Target.Address = "$G$9" Then Target.Offset(1, 0).Select
ENd Sub

1 Ответ

0 голосов
/ 22 октября 2018

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

https://docs.microsoft.com/en-us/office/vba/api/excel.range.locked

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