当尝试设置Range对象的 Locked
属性时,遇到了所有运行时错误1004,“无法设置Range类的Locked属性”。代码如下:
that_goddamn_sheet.Unprotect
; Determine if we should proceed
that_goddamn_range.Locked = True
; Do more stuff
that_goddamn_sheet.Protect
当我在行上设置一个断点并尝试从“即时”窗口中查询
that_goddamn_range.Locked
的值时,这可以正常工作,但是设置失败。但是,如果我运行
that_goddamn_range.Select
,破坏宏,取消保护工作表(它会在选择更改时自动重新保护),然后右键单击,选择“属性”,切换到“保护”选项卡,然后勾选“锁定”,然后确认,一切正常。可能出了什么问题?
最佳答案
这里是完整的解释:
通常,导致此错误的原因有两种:尝试更改 protected 工作表上单元格的 Locked 属性和/或尝试更改合并范围内单个单元格的 Locked 属性。
在第一种情况下,您可以解锁工作表,也可以为其设置 UserInterfaceOnly 保护,因此强烈建议您使用该保护,因为这样您就不必再重复对其进行解锁/锁定了。
对于合并的单元格,您无法锁定属于合并范围的单个单元格,但是有一些合理的选择:
Range("A1").Locked = True
然后引用整个合并范围:
Range("A1:A3").Locked = True 'where "A1:A3" is the entire merged range
Range(“SomeNamedRange”).MergeArea.Locked = True
但请注意,您不能同时进行这两种操作,因为 MergeArea 属性显然是未定义的,而该范围并不是较大合并区域的严格子集!
关于excel - 设置Range.Locked时出现错误1004,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9184818/