检查范围是否为命名范围

时间:2017-08-31 22:42:44

标签: excel excel-vba vba

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}。 (暂且不论这个优化有多少保证,问题仍然存在。)

1 个答案:

答案 0 :(得分:2)

你只是一个财产。

当您编写SheetDB.Range("$C$1").Name时,会返回一个Name对象。

您想要的Name对象的属性实际上是该Name对象的Name属性。

所以:

SheetDB.Range("$C$1").Name.Name会给你" VerPeriod"如你所愿