【发布时间】:2016-02-05 22:57:07
【问题描述】:
我有一个单元格有多个与之关联的命名范围。如何让它返回一个特定的名称,而不必遍历工作簿中的所有名称?
Sub Test()
ActiveWorkbook.Names.Add Name:="AUserDefinedName1", RefersTo:="='Sheet1'!$A$1", Visible:=True
ActiveWorkbook.Names.Add Name:="AUserDefinedName2", RefersTo:="='Sheet1'!$A$1", Visible:=True
ActiveWorkbook.Names.Add Name:="MyName", RefersTo:="='Sheet1'!$A$1", Visible:=True
Dim n As Name
Set n = Range("A1").Name
Debug.Print n.Name
End Sub
如果您运行上述程序,对于单元格 A1,它只会返回名字。但是,我如何让它返回与单元格 A1 关联的其他名称或专门返回“MyName”?
我可以遍历工作簿中的所有名称,并查看 Name 对象的“RefersTo”属性是否与单元格 A1 的地址匹配,但如果可能的话,我想要一个更快的更直接的解决方案。
这个帖子给出了部分答案,但是如果有多个名字需要怎么办? How do you get a Range to return its Name?
【问题讨论】:
-
真正的问题是——为什么同一范围有 3 个名称!?
-
@MacroMan 显然这样 OP 可以在 SO duh 上提问。
-
既然你问了......其中一个名称将被隐藏并存储代码使用的信息。但是,如果用户还在代码也放置了名称的同一范围内添加了一个(或两个)名称,该怎么办。
-
供您参考,这里有一个更短的创建名称的方法:
Range("Sheet1!A1").Name = "MyName"
标签: vba excel named-ranges