从VBA命名范围中获取一个值

13

我想要从命名范围中检索一个值。想象一下一个拥有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个回答

27

使用此功能

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

获取名为"myNamedRange"的命名区域中第一个单元格的值

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


1
这很有用,但如果您在名称管理器中将名称限定到特定的工作表,则可能需要考虑类似于 ActiveSheet.Names 的东西。 - Unoembre

5

这似乎是一个放置便笺的好位置(因为它是一个顶级搜索结果):
如果给一个单元格命名为“TopLeft”,那么Sheets(1).Range("TopLeft").Value可以获取该单元格的内容,而Sheets(1).Range("TopLeft").Offset(2,3).Value则可以获取该单元格向下2个、向右3个单元格处的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接