【问题标题】:How to unlock blank cells in workbook with VBA on open如何使用打开的 VBA 解锁工作簿中的空白单元格
【发布时间】:2019-05-23 07:10:05
【问题描述】:

我有一个包含多个工作表的工作簿,在打开工作簿时需要锁定和保护所有非空白单元格。

这将是一份员工培训记录,其中多名培训师将评估新员工的技能。我想防止任何人意外删除训练数据。

我找到了一个可以锁定所有单元格、将所有空白单元格设置为未锁定并保护单个工作表的代码,但我无法在整个工作簿中应用此代码。

Private Sub Workbook_Open()

    Dim myCell As Range

    Set myCell = Selection
    Cells.Select
    Selection.Locked = True
    myCell.Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Locked = False

    ActiveSheet.Protect DrawingObjects:=True, _
      Contents:=True, Scenarios:=True
    myCell.Select

End Sub

理想情况下,我还想添加密码保护以防止新员工取消对工作簿的保护。这可能在同一代码中吗?也可以将其拆分为一个新问题。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    在这种情况下,每张纸的密码是secret

    Sub Tony()
        Dim s As Worksheet
    
        For Each s In Sheets
            s.Unprotect ("secret")
                s.Cells.Locked = False
                On Error Resume Next
                    s.Cells.SpecialCells(xlCellTypeConstants).Locked = True
                    s.Cells.SpecialCells(xlCellTypeFormulas).Locked = True
                On Error GoTo 0
            s.Protect ("secret")
        Next s
    
    End Sub
    

    注意:

    首先确保这符合您的要求。只有这样你的事件宏才会调用它。

    【讨论】:

    • 非常感谢!正是我需要的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    相关资源
    最近更新 更多