按Worksheet.Range("Name")
,我可以得到一个命名范围。
我正在寻找相反的操作:给定Range
,检查它是否有定义的名称。
Tried .Name
但它提供的是表达式而不是用户定义的名称:
? SheetDB.Range("VerPeriod").Address
$C$1
? SheetDB.Range("$C$1").Name
=БазаСИ!$C$1
目的是:我希望通过列的用户定义名称而不是其位置从给定行获取值,以提高代码可读性和可维护性。为此,我将每个标题单元格设置为命名范围。这可以通过类模块实现,因此在设置代码中可以扫描标题行并生成a hash table {name: column number}
。 (暂且不论这个优化有多少保证,问题仍然存在。)
答案 0 :(得分:2)
你只是一个财产。
当您编写SheetDB.Range("$C$1").Name
时,会返回一个Name对象。
您想要的Name对象的属性实际上是该Name对象的Name属性。
所以:
SheetDB.Range("$C$1").Name.Name
会给你" VerPeriod"如你所愿