vba - 锁定/解锁单元格的 If-Then-Else 代码不断失败

标签 vba excel

使用: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/

相关文章:

json - 在 Windows 上的 Excel VBA 中,对于解析的 JSON 变量,这个 JScriptTypeInfo 到底是什么?

excel - 代码给了我编译错误,预期为 : List Separator or )

json - 如何获取 ("fields")在 VBA-JSON 中工作

excel - 冒号带等号 ":="是什么意思

c# - 挂起互操作 COM 对象的问题

excel - IF 条件 - 连接多个列

ms-access - 使用选定的项目创建ListBox MsgBox

excel - 将分数视为 FALSE 的逻辑运算符

excel - VB Excel宏代码错误-msxml3.dll -2146697211系统无法找到指定的资源

python - 如何将打印输出保存到 Excel 表格中