使用:Excel 2010
我的代码的这部分一直在失败,我不知道为什么。当我尝试运行整个代码块时,它返回"运行时错误' 1004':无法设置Range类的锁定属性"。
'Lock/unlock issue
ThisWorkbook.Sheets("Dashboard").Activate
ActiveSheet.Unprotect Password:="my password"
Selection.Locked = False
Selection.FormulaHidden = False
If Range("D20").Value <> "Document Recorded" Then Range("F24").Locked = True Else Range("F24").Locked = False
ActiveSheet.Protect Password:="my password", DrawingObjects:=True, Contents:=True, Scenarios:=True
基本上,我想说:如果单元格D20不等于&#34;文档记录&#34;然后锁定单元格F24,否则解锁单元格F24。
答案 0 :(得分:6)
虽然我测试了您的代码并且它按原样运行,但我建议您将代码重构为以下内容。
With ThisWorkbook.Sheets("Dashboard")
.Unprotect Password:="my password"
.Range("F24").Locked = .Range("D20").Value <> "Document Recorded"
.Protect Password:="my password", DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
直接使用 对象和avoiding 'Select' and 'ActiveSheet/Workbook/Cell'是最佳做法,如果使用会导致各种毫无疑问的问题。
答案 1 :(得分:1)
在运行代码之前,必须先关闭工作表保护功能。我假设您使用保护,否则您将无法使用手机锁功能。