繁体   English   中英

Excel-VBA保存之前锁定一系列单元格

[英]Excel-VBA Before Save Lock a range of cells

我正在生成一个每日计划表,我想在保存后锁定一些评估单元。 我已经在excel工作簿代码中编写了以下代码。 宏要求在保存之前输入密码。 为什么要求输入密码?(我有53张纸用于每周计划。这里仅显示2张)

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("Sheet18").Unprotect Password:="****"
Sheets("Sheet19").Unprotect Password:="****"
ActiveSheet.Protect Contents:=False
For Each Cell In Range("H5:H24,J5:J24")
If Cell <> "" Then Cell.Locked = True
If Cell = "" Then Cell.Locked = False
Next
ActiveSheet.Protect Contents:=True
Sheets("Sheet18").Protect Password:="****"
Sheets("Sheet18").Protect UserInterfaceOnly:=True
Sheets("Sheet19").Protect Password:="****"
Sheets("Sheet19").Protect UserInterfaceOnly:=True
End Sub

保存时,代码将根据活动工作表而有所不同。

另外,我不建议使用本地循环变量重载保留名称“ Cell”。 这将导致意外行为。

您应该删除对ActiveSheet的引用。 如果您希望保护整个工作簿,则建议对工作表进行迭代:

Sub ProtectAll()
    Dim wSheet As Worksheet
    Dim myCell As Range
    For Each wSheet In Worksheets
        wSheet.Unprotect Password:="****"
        For Each myCell In Range("H5:H24,J5:J24")
            myCell.Locked = (myCell <> "")
        Next myCell
        wSheet.Protect Contents:=True, Password:="****", UserInterfaceOnly:=True
    Next wSheet
End Sub

注意:您必须将代码放入代码模块中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM