If-Then-Else code that Locks / Unlocks cells keeps failing
使用:Excel 2010
我的这部分代码一直失败,我不知道为什么。当我尝试运行整个代码块时,它返回 "Run-time error \\'1004\\': Unable to set the Locked property of Range class"。
1 2 3 4 5 6 7 | '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 不等于 "Document Recorded",则锁定单元格 F24,否则解锁单元格 F24。
虽然我测试了您的代码并按原样运行,但我建议将您的代码重构为以下内容。
1 2 3 4 5 6 7 | 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 |
直接使用对象并避免"选择"和"ActiveSheet/Workbook/Cell"是最佳做法,如果使用会导致各种意想不到的问题。
在运行代码之前,您必须关闭工作表保护。我假设您使用保护,否则您将不会使用单元锁定功能。