gpt4 book ai didi

vba - Excel VBA。您如何获得与范围关联的特定名称?

转载 作者:行者123 更新时间:2023-12-04 20:12:23 25 4
gpt4 key购买 nike

我有一个单元格,它有多个与之关联的命名范围。如何让它返回一个特定的名称,而不必遍历工作簿中的所有名称?

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?

最佳答案

使用 Workbook.Names采集测试地址:

For Each n In ActiveWorkbook.Names
If n.RefersToRange.Address = "$A$1" Then
Debug.Print n.Name
End If
Next

有一个 whole MSDN article关于命名范围也可以进一步阅读。

没有 Names范围对象的集合,因此完成此操作的唯一方法是在工作簿级别。除非您的工作簿中有数千个命名范围,否则使用此方法不会有明显的速度差异,只需创建一个 UDF 即可获取您需要的名称。

关于vba - Excel VBA。您如何获得与范围关联的特定名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35234950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com