取消保护工作表,保护一些单元格,让其他单元格自由

时间:2020-03-15 20:39:03

标签: excel vba userform

我有以下代码:

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

打开工作簿时,所有工作表均受到保护。如果我按下一个按钮,则顶部的代码将运行以锁定上面具有公式的单元格,以便用户无法触摸它们并让它们更改其他自由的单元格。 问题在于,当最后一行激活时,它将再次保护所有工作表。

这是文件:Data File

2 个答案:

答案 0 :(得分:0)

如果在“保护表”对话框中取消选中“选择未锁定的单元格”选项,则即使未锁定的单元格也无法编辑,因为用户无法选择它们。

答案 1 :(得分:0)

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

一切都按预期工作,所以谢谢蒂姆·威廉姆斯的帮助