Снимите защиту с листа, защитите некоторые клетки и оставьте другие свободными - PullRequest
0 голосов
/ 15 марта 2020

У меня есть следующий код:

Sub UnProtect4User()
Dim ws As Workbook

Set ws = ActiveWorkbook

Worksheets("Datos").Unprotect Password:="2020"
MsgBox "The Sheet is unprotected"

ws.Sheets("Datos").Range("A2:J350").Locked = False

ws.Sheets("Datos").Protect Password:="2020"

MsgBox "Now you can edit"

End Sub

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

Вот файл: Файл данных

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

В ThisWorkbook это новый код:

Private Sub Workbook_Open()
Dim ws As Workbook

Set ws = ActiveWorkbook

ClearFilters

Worksheets("Datos").Unprotect Password:="2020"

With Worksheets("Datos")
.EnableSelection = xlNoSelection

ws.Sheets("Datos").Range("A2:N350").Locked = True
End With

Worksheets("Datos").Protect Password:="2020", Contents:=True, _
        AllowInsertingColumns:=False, AllowInsertingRows:=False, _
        AllowDeletingColumns:=False, AllowDeletingRows:=False, _
       AllowSorting:=True, AllowFiltering:=True

End Sub

А в модуле:

Dim ws As Workbook

Set ws = ActiveWorkbook

Worksheets("Datos").Unprotect Password:="2020"

With Worksheets("Datos")
.EnableSelection = xlUnlockedCells

ws.Sheets("Datos").Range("A2:L350").Locked = False

ws.Sheets("Datos").Protect Password:="2020"

End With

MsgBox "It's now unprotected, so you can work on it buddy."

End Sub

Все работает так, как задумано, поэтому спасибо Тиму Уильямсу за помощь

0 голосов
/ 16 марта 2020

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

...