从VBA中的命名区域获取值

时间:2014-10-07 18:40:22

标签: vba excel-vba excel

我想从命名范围中检索一个值。想象一下具有X列和Y行的命名范围。我想返回一个值,例如,从第2列第3行返回。我遇到的问题是,如果我编写代码并运行它,Excel会抛出错误。如果我将代码写入监视窗口,它返回正常。见下文

...
Dim NamedRange As Variant: NamedRange = Range(NamedRangeName)
...
Dim ReturnValue As Object
Set ReturnValue = NamedRange(RowIndex, ColumnToRetrieveIndex) 'Throws Run-time error 424. Object required

如果我写 NamedRange(RowIndex,ColumnToRetrieveIndex) 进入观察窗口,我可以看到细胞的正确值。

我不太了解VB,所以我想这只是某种语法错误,我想把它传递给ReturnValue,但我无法理解它。

2 个答案:

答案 0 :(得分:7)

使用此

ThisWorkbook.Names("myNamedRange").RefersToRange(1,1)

从命名范围“myNamedRange”

中获取第一个单元格的值

使用ThisWorkbook.Names,您可以访问当前工作簿中所有工作表的所有命名范围。 使用RefersToRange,您可以获得对实际范围的引用。

答案 1 :(得分:0)

这看起来像是方便记笔记的好地方(因为它是搜索结果的顶部):
如果将单元格命名为“ TopLeft”,则Sheets(1).Range("TopLeft").Value获取内容,而Sheets(1).Range("TopLeft").Offset(2,3).Value从2向下获取值,在此3处获取值。