【问题标题】:Getting a value from a named range in VBA从 VBA 中的命名范围获取值
【发布时间】:2014-10-07 18:40:21
【问题描述】:

我想从命名范围中检索一个值。想象一个有 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,但我就是想不通。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    使用这个

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

    从命名范围“myNamedRange”中的第一个单元格中获取值

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

    【讨论】:

    • 这很有用,但如果您已将名称范围限定为名称管理器中的特定工作表,您可能需要考虑类似 ActiveSheet.Names 的内容。
    【解决方案2】:

    这看起来是个放置便签的好地方(因为它是热门搜索结果):
    如果将单元格命名为“TopLeft”,则Sheets(1).Range("TopLeft").Value 获取内容,Sheets(1).Range("TopLeft").Offset(2,3).Value 获取从 2 向下、3 对面的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      相关资源
      最近更新 更多