在某些单元格中锁定编辑但没有进一步保护

时间:2012-11-19 23:18:33

标签: excel vba

我正在尝试以某种方式保护我的Excel工作表,以防止在某些单元格中进行编辑,但禁用了所有其他保护选项。换句话说,只有在某些单元格中禁用了单元格编辑时,工作表才应具有不受保护的工作表。

ActiveSheet.Range(Cells(4, 3), Cells(OldRowCount, 7)).Locked = False
ActiveSheet.Protect Contents:=True

我可能需要为.Protect设置其他几个属性,或者我应该选择一个不同的方法......

提前致谢!

1 个答案:

答案 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