Excel 从命名范围/公式返回值(错误1004、2015或13)
从Excel VBA中的命名公式返回值时遇到问题(简单的命名范围按预期工作) 重新创建的步骤Excel 从命名范围/公式返回值(错误1004、2015或13),excel,vba,named-ranges,Excel,Vba,Named Ranges,从Excel VBA中的命名公式返回值时遇到问题(简单的命名范围按预期工作) 重新创建的步骤 空白工作簿 创建命名范围/公式rowOffset等于: =ROW(Sheet1!$A$2)-ROW(Sheet1!$A$1) rowOffset按预期计算(等于1) 但是,我无法理解如何在VBA中返回rowOffset的值 带有错误的示例代码 为什么上述代码在这种特定情况下不起作用,但在定义为=$a$1的命名范围内起作用(返回A1值,如预期的那样) 编辑:感谢Simoco(非常简单!)的回答。一次通
rowOffset
等于:
=ROW(Sheet1!$A$2)-ROW(Sheet1!$A$1)
rowOffset
按预期计算(等于1)rowOffset
的值
带有错误的示例代码
为什么上述代码在这种特定情况下不起作用,但在定义为=$a$1
的命名范围内起作用(返回A1值,如预期的那样)
编辑:感谢Simoco(非常简单!)的回答。一次通过当地人窗口的旅行,我应该能够自己解决这个问题!哈哈 下面的答案似乎应该能为您提供完成此任务所需的详细信息。很惊讶没有更简单的东西,但希望能有所帮助
首先,有趣的问题 工作代码:
Debug.Print Evaluate("rowOffset")(1)
或
或
或
为什么Debug.Print Evaluate(“rowOffset”)
不起作用?原因是
ROW()
实际上返回一个元素而不是单个值的数组,i、 e.
{1}
,您只需获取它的第一个元素或使用连接来连接数组
谢谢这对我有帮助。我变了
Application.Evaluate(Me.Names("rowOffset").Value)
到
这允许用户访问speadsheet中没有单元格地址的命名区域。谢谢。这解决了问题的具体例子,但不是问题本身。我把它简化了一点,以便更容易地呈现出来,而这个答案对我实际做的事情并没有帮助(这不是你的错,因为你无法知道)。我没有意识到行返回一个数组。呵呵。
Debug.Print Join(Evaluate("rowOffset"))
Debug.Print Evaluate("INDEX(rowOffset,1)")
Debug.Print [INDEX(rowOffset,1)]
Application.Evaluate(Me.Names("rowOffset").Value)
Application.Evaluate(ThisWorkbook.Names("rowOffset").Value)