从VBA中的命名范围中获取值

从VBA中的命名范围中获取值,vba,excel,Vba,Excel,我想从命名范围中检索一个值。假设一个命名区域有X列和Y行。我想返回一个值,例如第2列第3行的值。我遇到的问题是,如果我编写代码并运行它,Excel会抛出一个错误。如果我将代码写入watch窗口,它将返回良好的结果。见下文 ... Dim NamedRange As Variant: NamedRange = Range(NamedRangeName) ... Dim ReturnValue As Object Set ReturnValue = NamedRange(RowIndex, Colu

我想从命名范围中检索一个值。假设一个命名区域有X列和Y行。我想返回一个值,例如第2列第3行的值。我遇到的问题是,如果我编写代码并运行它,Excel会抛出一个错误。如果我将代码写入watch窗口,它将返回良好的结果。见下文

...
Dim NamedRange As Variant: NamedRange = Range(NamedRangeName)
...
Dim ReturnValue As Object
Set ReturnValue = NamedRange(RowIndex, ColumnToRetrieveIndex) 'Throws Run-time error 424. Object required
如果我写 NamedRange(行索引、列检索索引) 在watch窗口中,我可以看到单元格的正确值

我对VB不太了解,所以我想这只是某种语法错误,我想如何将它传递到ReturnValue中,但我就是想不出来

ThisWorkbook.Names("myNamedRange").RefersToRange(1,1)
从命名范围“myNamedRange”中的第一个单元格获取值

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

这看起来是一个方便的地方(因为它是顶级搜索结果):

如果将单元格命名为“TopLeft”,则
Sheets(1).Range(“TopLeft”).Value
获取内容,
Sheets(1).Range(“TopLeft”).Offset(2,3).Value
获取从2开始的值,3。在这里,

这是有用的,但是如果你在名字管理器中把你的名字应用到一个特定的工作表中,你可能需要考虑一些类似于“代码> ActudieSeGET”的名字。