Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从命名范围/公式返回值(错误1004、2015或13)_Excel_Vba_Named Ranges - Fatal编程技术网

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

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(非常简单!)的回答。一次通

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

重新创建的步骤
  • 空白工作簿
  • 创建命名范围/公式
    rowOffset
    等于:

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

  • 但是,我无法理解如何在VBA中返回
    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)