以C和数字开头的Excel命名范围
我正在研究一个宏,我需要命名一组范围,但我遇到了一个模糊的限制 命名范围可以是单个字母,但“r”、“r”、“c”或“c”除外,当在Excel名称框中键入这些字母时,它们是选择活动单元格整行或整列的快捷方式(我从未需要过,也无法想象自己需要过这一功能) 不幸的是:a)我需要用以C和数字开头的Excel命名范围,excel,vba,named-ranges,Excel,Vba,Named Ranges,我正在研究一个宏,我需要命名一组范围,但我遇到了一个模糊的限制 命名范围可以是单个字母,但“r”、“r”、“c”或“c”除外,当在Excel名称框中键入这些字母时,它们是选择活动单元格整行或整列的快捷方式(我从未需要过,也无法想象自己需要过这一功能) 不幸的是:a)我需要用/^C\d+.*/的格式命名范围,b)虽然我在这方面看到的一点文档(不是微软官方提供的)说您只是被限制使用单个字母C,但我发现我不能使用任何与该正则表达式匹配的名称范围 下面是我遇到的一个例子: Sub test()
/^C\d+.*/
的格式命名范围,b)虽然我在这方面看到的一点文档(不是微软官方提供的)说您只是被限制使用单个字母C,但我发现我不能使用任何与该正则表达式匹配的名称范围
下面是我遇到的一个例子:
Sub test()
On Error Resume Next
' These work:
ThisWorkbook.Names.Add Name:="A0", RefersTo:=Range("A1")
ThisWorkbook.Names.Add Name:="C0", RefersTo:=Range("A1")
ThisWorkbook.Names.Add Name:="D0", RefersTo:=Range("A1")
ThisWorkbook.Names.Add Name:="A1_Test", RefersTo:=Range("A1")
ThisWorkbook.Names.Add Name:="A1Test", RefersTo:=Range("A1")
ThisWorkbook.Names.Add Name:="Test_A1", RefersTo:=Range("A1")
ThisWorkbook.Names.Add Name:="D1_Test", RefersTo:=Range("A1")
ThisWorkbook.Names.Add Name:="D1Test", RefersTo:=Range("A1")
ThisWorkbook.Names.Add Name:="Test_C1", RefersTo:=Range("A1")
ThisWorkbook.Names.Add Name:="Capricious", RefersTo:=Range("A1")
' These fail:
ThisWorkbook.Names.Add Name:="C1_Test", RefersTo:=Range("A1")
ThisWorkbook.Names.Add Name:="C1Test", RefersTo:=Range("A1")
Debug.Print "Named Ranges:"
Dim nm As Name
For Each nm In ActiveWorkbook.Names
Debug.Print vbTab & nm.Name
Next nm
End Sub
请注意,我可以使用名称,其中C在该正则表达式中替换为其他字母,我可以使用以C开头但后面不跟数字的名称,但我尝试匹配该正则表达式的任何内容都失败
我错过什么了吗?实际上有没有一种方法可以使用像“C1_测试”这样的命名范围
如果相关的话,我在365办公室
谢谢
似乎“类似”一个单元地址也包括“以”一个单元地址开头。我认为最接近的方法是将下划线作为第一个字符或中间字符。例如:\u C1Test
或C\u 1Test
R
和C
是特例,因为它们也用于R1C1
表示法
而且,我同意命名限制没有很好的记录似乎“类似”一个单元地址也包括“以”一个单元地址开头。我认为最接近的方法是将下划线作为第一个字符或中间字符。例如:
\u C1Test
或C\u 1Test
。查找Excel的R1C1
地址符号。不允许您命名与范围地址冲突的单元格,无论是A1
style还是R1C1
style。这不是错误。例如,您不能命名范围A1
,因为该名称是工作表中第一个单元格的地址。如果您可以命名另一个范围A1
,那么Excel将无法知道您在任何公式中引用的是哪个A1
。同样的情况也适用于与R1C1
样式中的地址冲突的名称。Excel将不允许您使用与范围地址冲突的名称产生歧义。@谢谢您的反馈。我知道我不能使用一个确切的现有单元格地址作为命名范围,为什么。在我看来,不能用C\d+
开始一个名字是一个bug。再次注意,“A1_测试”是可以的,而“C1_测试”不是,所以这不仅仅是对禁止名称匹配现有单元地址的过分热情的扩展。如果后者因“太像单元地址”而被禁止,则前者也应如此。R
和C
是特例,因为它们也用于R1C1
表示法。而且,我同意命名限制没有很好的记录。