Excel 以 C 和一个数字开头的命名范围
Excel named range starting with C and a digit
我正在开发一个宏,我需要在其中命名一系列范围,但我 运行 遇到了一个模糊的限制。
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
表示法。
而且,我同意没有很好地记录命名限制
我正在开发一个宏,我需要在其中命名一系列范围,但我 运行 遇到了一个模糊的限制。
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
表示法。
而且,我同意没有很好地记录命名限制