我正在尝试以某种方式保护我的Excel工作表,以防止在某些单元格中进行编辑,但禁用了所有其他保护选项。换句话说,只有在某些单元格中禁用了单元格编辑时,工作表才应具有不受保护的工作表。
ActiveSheet.Range(Cells(4, 3), Cells(OldRowCount, 7)).Locked = False
ActiveSheet.Protect Contents:=True
我可能需要为.Protect
设置其他几个属性,或者我应该选择一个不同的方法......
提前致谢!
答案 0 :(得分:1)
我认为问题只是,如何在VBA中正确设置此行为。
快速使用 F1 几乎可以提供所需的一切。出了什么问题,是使用Locked
,因为对于某些单元格它必须是true
而对于所有其他单元格来说都是假的,以便表现得像用户一样。
这是我的解决方案:
Public Sub Demo()
With ActiveSheet
'Deactivate lock for all cells, so they don't be blocked by protection
.Cells.Locked = False
'Activate lock for some cells
'Range(Cells(4, 3), Cells(OldRowCount, 7)).Locked = True
.Cells(6, 4).Locked = True
If .ProtectContents Then
.Unprotect
Else
'only contents:=true is really important
.Protect _
Password:="", _
Contents:=True, _
DrawingObjects:=False, _
Scenarios:=False, _
UserInterfaceOnly:=True, _
AllowDeletingColumns:=True, _
AllowDeletingRows:=True, _
AllowFiltering:=True, _
AllowFormattingCells:=True, _
AllowFormattingColumns:=True, _
AllowFormattingRows:=True, _
AllowInsertingColumns:=True, _
AllowInsertingHyperlinks:=True, _
AllowInsertingRows:=True, _
AllowSorting:=True, _
AllowUsingPivotTables:=True
End If
End With
End Sub