当我试图设置Locked http://msdn.microsoft.com/en-us/library/bb213550%28v=office.12%29.aspxRange 对象的属性。代码如下所示:
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
,打破宏,取消保护工作表(在选择更改时会自动重新保护),然后右键单击,选择“属性”,切换到“保护”选项卡并勾选“锁定”,然后确认,但是一切正常。
可能出了什么问题?
这是完整的解释:
通常,导致此错误的原因有两个: 尝试更改单元格的Locked受保护的工作表上的属性和/或尝试更改Locked合并区域中单个单元格的属性。
在第一种情况下,您可以解锁工作表或设置仅用户界面强烈建议对其进行保护,因为这样您就不必反复解锁/锁定它。
对于合并单元格,您无法锁定属于合并范围的单个单元格,但有一些合理的选项:
-
如果您使用单元格地址表示法来引用单元格/范围,
Range("A1").Locked = True
然后引用整个合并范围:
Range("A1:A3").Locked = True 'where "A1:A3" is the entire merged range
-
如果您对一组合并单元格使用命名范围,则默认情况下它将被定义为仅引用第一个合并单元格。您可以编辑其定义以包括整个合并范围或使用其合并区属性来引用其关联的合并范围:
Range(“SomeNamedRange”).MergeArea.Locked = True
但请注意,您不能同时执行这两项操作,因为合并区显然,对于不是严格的范围,属性是未定义的subset更大的合并区域!
当然,您始终可以在设置包含单元格的 Locked 属性之前取消合并合并范围,然后重新合并它,但我从未见过上述两种解决方案之一不够的情况(而且更干净) )。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)