【问题标题】:VBA to change cell protection format from unlocked to lockedVBA将单元格保护格式从解锁更改为锁定
【发布时间】:2016-02-20 19:39:57
【问题描述】:

我的工作表包含锁定以保护公式和解锁以允许数据输入的单元格。工作表的末尾是审阅者的签字按钮。我想将 VBA 添加到此按钮,该按钮将锁定以前解锁的单元格(按单元格格式),以防止在工作表审核完成后发生更改。

这是我当前的代码 -

Sub Button9_Click()
If Range("I108") = Empty Then
If MsgBox("Are you sure you want to sign-off COMPLETE as Reviewer?", vbYesNo) = vbNo Then Exit Sub
ActiveWorkbook.ActiveSheet.Unprotect "locked"
ActiveWorkbook.ActiveSheet.Range("I109").Value = "Reviewed: " & Format(Date, "mm/dd/yyyy") & " By: " & Application.UserName
ActiveWorkbook.ActiveSheet.Protect "locked"
End If
End Sub

【问题讨论】:

  • 猜有错误?如果是这样,在哪里和什么?
  • 运行时错误“1004”:无法设置范围类的锁定属性。当使用 ActiveWorkbook.ActiveSheet.Cells.Locked = True 时
  • 1) 您在什么时候收到该错误,在您的代码中看不到命令​​ActiveWorkbook.ActiveSheet.Cells.Locked = True。 2)是否“锁定”了工作表的密码?
  • 1) 错误出现在您列出的位置,2) “locked”是密码
  • @EEM 和 ejdav 我的错我已经删除了我的答案。我在阅读问题时接到了一个电话并做了一个假设。

标签: excel vba


【解决方案1】:

这是你的意思吗:

ActiveWorkbook.ActiveSheet.Cells.Locked = True

这会将工作表中的所有单元格设置为锁定

【讨论】:

  • 我试过了,运行时错误1004:无法设置范围类的锁定属性
  • 您是否先将工作表取消保护?
  • 是的,我还解锁了对工作簿结构的保护
【解决方案2】:

问题似乎是由工作簿中的事件触发的。试试这个:

Sub Button9_Click()
Const kPassWord As String = "locked"
Const kCll As String = "I109"

    With ActiveWorkbook.ActiveSheet
        If .Range(kCll) = Empty Then
            If MsgBox("Are you sure you want to sign-off COMPLETE as Reviewer?", vbYesNo) = vbNo Then Exit Sub
            Application.EnableEvents = False
            .Unprotect kPassWord
            .Range(kCll).Value = "Reviewed: " & _
                Format(Date, "mm/dd/yyyy") & " By: " & Application.UserName
            .Cells.Locked = True
            .Cells.FormulaHidden = False
            .Protect kPassWord
            Application.EnableEvents = True
    End If: End With

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多