视觉错误? Excel-vba具有许多区域的AllowEditRange

当我运行这个代码:

Sub AerTest() 'aer = allow edit range Dim c, aerMain As Range Set aerMain = Range("A1") For Each c In Range("A1:AI23") If c.Value = 1 Then Set aerMain = Union(c, aerMain) End If Next c ActiveSheet.Protection.AllowEditRanges.Add Title:="Test", Range:=aerMain End Sub 

我期望在审查 – >允许编辑范围find一个叫“testing”,其中包含所有的单元格中有一个1,在相关的范围(A1:AI23)。

在function方面,它似乎工作。 当表单被locking时,所有包含1的单元格都可以被修改。

但是,如下所示,它不是正确的事情发生,即它只显示了它应该在范围的几个领域。 看起来,“引用单元格”字段只包含类似的内容

 =$AI$23;$AG$23;$AE$23;$AC$23;$AA$23;$Y$23;$W$23;$U$23;$S$23;$Q$23;$O$23;$M$23;$K$23;$I$23;$G$23;$E$23;$C$23;$A$23;$AI$21;$AG$21;$AE$21;$AC$21;$AA$21;$Y$21;$W$21;$U$21;$S$21;$Q$21;$O$21;$M$21;$K$21;$I$21;$G$21;$E$21;$C$21;$A$21;$AI$19;$AG$19;$AE$19;$AC$19 

显然不包含所有相关的单元格(如“A1”)。

如果我进入如下所示的菜单,然后按OK而不是Cancel,那么当表单被locking时,我将失去所有包含1可编辑单元格的function,然后我实际上只能编辑这个区域中的字段字段“指细胞”。

这是纯粹的一个视觉错误,还是有其他的方法来允许编辑范围,以避免这些怪癖处理与许多领域的范围?

运行上面的代码的结果

我发现微软的一些文档重新定义和使用公式中的名称 。 重要的部分说:

名称长度名称最多可包含255个字符。

就Excel而言, =$AI$23;$AG$23;$AE$23;$AC$23;$AA$23;$Y$23...只是另一个范围名称,因此仅限于255个字符。

您的AllowEditRanges.Add将工作,因为它实际上与范围本身,而不是通过范围名称,但名称被添加将被截断为255个字符。