簡體   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