[英]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.