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

标签 excel vba named-ranges

我在从 Excel VBA 中的命名公式返回值时遇到问题(简单的命名范围按预期工作)。

重新创建的步骤

  1. 空白工作簿
  2. 创建命名范围/公式 rowOffset 等于:

    =ROW(Sheet1!$A$2)-ROW(Sheet1!$A$1)
    
  3. rowOffset 按预期计算(等于 1)

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

有错误的示例代码

'##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 的(非常简单!)答案。通过本地人的窗口一趟,我应该能够自己解决这个问题!哈哈。

最佳答案

首先,有趣的问题!

沃金代码:

Debug.Print Evaluate("rowOffset")(1)

Debug.Print Join(Evaluate("rowOffset"))

Debug.Print Evaluate("INDEX(rowOffset,1)")

Debug.Print [INDEX(rowOffset,1)]

为什么 Debug.Print Evaluate("rowOffset") 不起作用?
原因是因为 ROW() 实际上返回包含一个元素的数组,而不是单个值
{1},您所需要做的就是使用 Join 获取它的第一个元素或连接数组。

enter image description here

关于excel - 从命名范围/公式返回值(错误 1004、2015 或 13),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23092865/

相关文章:

excel - 间接工作表名称仅作为变量,而不是工作簿或单元格

javascript - 从 Excel 读取并创建图表

excel - 动态自动填充目标

excel - 从 Powerpoint 关闭 Excel

EXCEL 2010 根据可能移动的命名范围构建图表

vba - 在 Excel VBA 中插入数组公式

mysql - 是否可以通过VBA查询MySQL?

vba - 创建具有脚本能力的 Powerpoint/Keynote 演示文稿?

string - Instr 函数无法检测到字符串中的单词

excel - 如何在 Excel 中引用命名范围中的第 N 列进行绘图?