检查范围是否是命名范围

通过Worksheet.Range("Name") ,我可以得到一个命名的范围。

我正在寻找相反的操作:给定一个Range ,检查它是否有一个定义的名称。

尝试。名称,但它提供了一个expression式而不是用户定义的名称:

 ? SheetDB.Range("VerPeriod").Address $C$1 ? SheetDB.Range("$C$1").Name =БазаСИ!$C$1 

意图是:我想从列的用户定义的名称而不是它的位置从给定的行获取值,以提高代码的可读性和可维护性。 为此,我会将每个标题单元格命名为一个范围。 这可以用一个类模块实现,所以在设置代码中可以扫描标题行并创build一个散列表 {name: column number} 。 (不谈这个优化有多less保证,问题依然存在。)

你只是一个财产了。

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

所需的Name对象的属性实际上是该Name对象的Name属性。

所以:

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