问题描述
我正在处理一个宏,在其中我需要命名一系列范围,而我刚遇到一个模糊的限制。
Apparently命名范围可以是单个字母,但'r','R','c'或'C'除外,当在Excel名称框中键入时,它们是选择整行或活动单元格的列(一种我从未需要且无法想象自己需要的功能)。
对我来说不幸的是:a)我需要使用/^C\d+_.*/
格式来命名范围,并且b)我在此上看到的一些文档(不是来自Microsoft的正式文件)说,你只是受限制了通过使用单个字母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_Test”之类的命名范围?
如果合适的话,我在Office 365中。
谢谢。
解决方法
似乎“类似于”单元格地址也包括“以...开头”单元格地址。我认为最接近您的是将下划线作为第一个字符,或作为一个中间字符。例如:_C1Test
或C_1Test
R
和C
是特殊情况,因为它们也用在R1C1
表示法中。
而且,我同意没有充分记录命名限制