使用:Excel 2010
我的这部分代码一直失败,我不知道为什么。当我尝试运行整个代码块时,它返回“运行时错误'1004':无法设置 Range 类的 Locked 属性”。
'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 不等于“记录的文档”,则锁定单元格 F24,否则解锁单元格 F24。
最佳答案
虽然我测试了您的代码并且它按原样工作,但我建议将您的代码重构为以下内容。
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'是最佳实践,如果使用可能会导致各种意想不到的问题。
关于vba - 锁定/解锁单元格的 If-Then-Else 代码不断失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37929745/