首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置Range.Locked时出现错误1004

设置Range.Locked时出现错误1004
EN

Stack Overflow用户
提问于 2012-02-08 06:15:43
回答 5查看 38.3K关注 0票数 11

当我试图设置一个Range对象的Locked属性时,我得到了一个通用的运行时错误1004,“无法设置Range类的Locked属性”。代码如下所示:

代码语言:javascript
复制
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,破坏宏,取消工作表保护(它在选择更改时自动重新保护),然后右键单击,选择属性,切换到保护选项卡,勾选锁定,然后确认,但一切正常。

会出什么问题呢?

EN

回答 5

Stack Overflow用户

发布于 2014-12-02 04:00:39

这里有一个完整的解释:

通常,导致此错误的原因有两种:尝试更改单元格在受保护工作表上的Locked属性和/或尝试更改合并区域中单个单元格的Locked属性。

在第一种情况下,您可以解锁工作表或为它设置UserInterfaceOnly保护,这是强烈建议的,因为这样您就不必反复解锁/锁定它。

对于合并的单元格,您不能锁定属于合并区域的单个单元格,但有一些合理的选项:

  • 如果使用单元格地址表示法引用单元格/区域,

Range("A1").Locked = True

然后引用整个合并范围:

Range("A1:A3").Locked = True 'where "A1:A3" is the entire merged range

  • If您正在为一组合并单元格使用命名区域,默认情况下,它将被定义为仅引用合并单元格中的第一个单元格。您可以编辑其定义以包括整个合并范围,也可以使用其MergeArea属性引用其关联的合并范围:

Range(“SomeNamedRange”).MergeArea.Locked = True

但请注意,您不能同时做到这两点,因为对于一个不是更大合并区域的严格子集的区域,MergeArea属性显然是未定义的!

  • 当然,您总是可以在设置包含的单元格的Locked属性之前取消合并的区域,然后再重新合并它,但我从未见过上述两种解决方案中的一种不足够的情况(而且更简洁)。
票数 22
EN

Stack Overflow用户

发布于 2014-01-26 06:01:17

不能锁定属于合并单元格区域一部分的单元格,除非它是左上角的单元格。下面的代码适用于任何单元格或合并的单元格区域。

代码语言:javascript
复制
Sub LockCells()
   Dim R As Range
   ActiveSheet.Unprotect
   Cells.Locked = False
   For Each R In Range("A1", Cells.SpecialCells(xlCellTypeLastCell).Address)
      If R.MergeArea.Range("A1").Address = R.Address And R.HasFormula Or IsText(R) Then
         R.MergeArea.Locked = True
      End If
   Next
   ActiveSheet.Protect
End Sub

Function IsText(What) As Boolean
   IsText = False
   On Error Resume Next
   IsText = (CDbl(What) <> What)
   If Err.Number Then IsText = True
End Function
票数 4
EN

Stack Overflow用户

发布于 2012-02-08 06:20:42

选择更改时,工作表将自动重新受到保护

由于某种原因,工作表在方法中间重新保护了自己。在设置Locked属性之前再次取消保护修复了我的问题。

实际上,我需要在一行中锁定多个范围,并且必须在每次属性更改之前取消对工作表的保护。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9184818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档