首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从命名范围/公式返回值(错误1004、2015或13)

从命名范围/公式返回值(错误1004、2015或13)
EN

Stack Overflow用户
提问于 2014-04-15 19:36:04
回答 3查看 5K关注 0票数 2

我很难从Excel中的命名公式返回一个值(一个简单的命名范围如预期的那样工作)。

重新创建的步骤

  1. 空白工作簿
  2. 创建命名范围/公式rowOffset,等于: =ROW(Sheet1!$A$2)-ROW(Sheet1!$A$1)
  3. rowOffset按预期计算(等于1)

但是,我一直无法弄清楚如何在VBA中返回rowOffset的值。

带误差的样本码

代码语言:javascript
运行
复制
'##Sheet1 module##
Sub test()
    'ERROR 1004: application-defined or object-defined error
    Debug.Print Me.Range("rowOffset").Value
    'Returns formula
    Debug.Print Me.Names("rowOffset").Value
    'ERROR 2015 in Immediate window
    Debug.Print Application.Evaluate(Me.Names("rowOffset"))
    'ERROR 13: type mismatch
    Debug.Print Application.Evaluate(Me.Names("rowOffset").Value)
End Sub

为什么上面的代码在这种特定情况下不能工作,但是对于定义为=$A$1的命名范围( A1的值会像预期的那样返回)?

编辑:感谢Simoco的(非常简单!)回答。一次通过当地人的窗口,我应该能够自己解决这个问题!哈哈。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-15 20:12:39

首先,有趣的问题!

工作代码:

代码语言:javascript
运行
复制
Debug.Print Evaluate("rowOffset")(1)

代码语言:javascript
运行
复制
Debug.Print Join(Evaluate("rowOffset"))

代码语言:javascript
运行
复制
Debug.Print Evaluate("INDEX(rowOffset,1)")

代码语言:javascript
运行
复制
Debug.Print [INDEX(rowOffset,1)]

为什么Debug.Print Evaluate("rowOffset")不能工作?

原因是因为ROW()实际上用一个元素而不是单个值返回数组,

也就是说,{1},您所需要的就是使用Join获取它的第一个元素或级联数组。

票数 2
EN

Stack Overflow用户

发布于 2014-04-15 19:51:12

看起来,下面的答案应该会给出完成任务所需的详细信息。惊讶的是没有更简单的东西,但希望它有帮助!

Excel listing named range in a worksheet and get the value

票数 1
EN

Stack Overflow用户

发布于 2019-10-15 14:12:49

谢谢这个帮了我。我改变了

代码语言:javascript
运行
复制
Application.Evaluate(Me.Names("rowOffset").Value)

代码语言:javascript
运行
复制
Application.Evaluate(ThisWorkbook.Names("rowOffset").Value)

这允许用户访问在规范表中没有单元格地址的命名范围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23092865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档