VBA - блокировка ячеек работает только в некоторых ячейках, а не в других - PullRequest
0 голосов
/ 06 февраля 2019

этот проект, безусловно, проверяет мои ограничения в VBA.У меня есть еще один вопрос.В этой книге у меня есть кнопка «Добавить проекты», которая берет другой лист «Шаблоны проектов» и использует его для создания нового листа под названием «Добавить проекты».Я пытаюсь добавить определенную блокировку ячейки при создании этого листа.Идея состоит в том, что пользователи могут изменять определенные области, но не те, которые имеют формулы или автоматически заполняются записью в другой ячейке.

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

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

Public Sub Open_AddProjectSheet()
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect Password:="Password"
Worksheets("ProjTemplate").Visible = True

If WorksheetExists("AddProject") = False Then
 GetTSResourceInfo
 GetTSProjectID
 ActiveWorkbook.Unprotect Password:="Password"
Worksheets("ProjTemplate").Copy After:=Worksheets("ProjTemplate")
ActiveSheet.Name = "AddProject"
 Worksheets("ProjTemplate").Visible = xlSheetVeryHidden
Sheets("AddProject").Activate
ActiveSheet.Unprotect Password:="Password"
ActiveSheet.Cells.Locked = False
ActiveSheet.Range("E5,C6,L2,L6").Locked = True
ActiveSheet.Range("E11:E190").Locked = True
ActiveSheet.Range("G11:H190").Locked = True
ActiveSheet.Range("K2:K6").Locked = True
ActiveSheet.Range("L11:R190").Locked = True
ActiveSheet.Range("L3:L5").Locked = False
ActiveSheet.Protect Password:="Password",UserInterFaceOnly:=True,Contents:=True
Else
answer = MsgBox("'AddProject' sheet already active. Would you like to pick up where you left?  WARNING: Selecting 'No' will close the existing sheet and open a new one, any progress will not be saved.", vbYesNo)

    If answer = 6 Then
        Worksheets("AddProject").Activate
        Else
            *Same code as above*
    End If

End If
Worksheets("ProjTemplate").Visible = xlSheetVeryHidden
ActiveWorkbook.Protect Password:="Password"
Application.ScreenUpdating = True
 End Sub

При запуске этого кода E5, C6,K2-K6, L2, L11-R190 все заблокированы правильно.L6 вызывает всплывающее окно с просьбой ввести пароль для изменения этой ячейки.Все остальные диапазоны, E11-E190, G11-H190, доступны для редактирования, даже если они должны быть заблокированы.

Любые идеи, которые я очень ценю.Спасибо!

1 Ответ

0 голосов
/ 07 февраля 2019

Итак, хотя раньше это не сработало, мы вернулись и попытались изменить Разрешить пользователям редактировать диапазоны.Уничтожил их все снова, и блокировка камеры начала работать.Я не собираюсь подвергать сомнению, почему это работало против не работает в прошлый раз, когда это попробовали, просто рад, что это работает!Тем не менее, скорость, отличающаяся от скорости, все еще остается проблемой.

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