视觉错误? Excel-vba AllowEditRange有很多区域

时间:2017-03-31 08:06:47

标签: excel vba excel-vba

当我运行此代码时:

adjust-dateTime()

我期待审核 - >允许编辑范围在相关范围内找到调用“测试”的内容,该测试包含其中包含1的所有单元格(A1:AI23)。

在功能方面似乎有效。当工作表被锁定时,所有包含1的单元格都可以更改。

然而,如下所示,它并没有发生正确的事情,即它只显示应该范围的一些区域。似乎“引用单元格”字段只包含类似

的内容
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

显然不包含所有相关细胞(例如“A1”)。

如果我按下面显示的菜单然后按OK而不是取消,我将失去在锁定工作表时让所有单元格包含1可编辑的功能,然后我实际上只能编辑中的字段这是在“指细胞”领域。

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

The result when running the above code

1 个答案:

答案 0 :(得分:1)

我在Microsoft Define and use names in formulas找到了一些文档。重要的部分说:

  

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

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

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