如何修复#VALUE!当UDF引用另一个工作簿时

时间:2015-04-20 15:38:07

标签: excel vba excel-vba

我在工作簿的Module1中定义了一个如下所示的函数:

Function Header(r As Range) As String
    For i = 1 To r.Row
        If r.Offset(-i, -1).Value = "" Then
            Header = r.Offset(-i).Value
            Exit For
        End If
    Next
End Function

我将其称为另一个工作簿的单元格,如下所示:

=Header('[OtherWorkbook.xlsx]Sheet1'!C34)

我得到的是#VALUE! ...直到我打开另一个工作簿,此时神奇地显示了该值。

如何强制电子表格从其他工作簿中获取值,即使它未打开?

2 个答案:

答案 0 :(得分:1)

指定已关闭的Excel工作簿的完整路径应该可以解决问题。

而不是

=Header('[OtherWorkbook.xlsx]Sheet1'!C34)

尝试

=Header('C:\Users\your_username\Desktop\[OtherWorkbook.xlsx]Sheet1'!C34)

将已关闭的工作簿的路径替换为上面的路径。

答案 1 :(得分:0)

所以答案是:它无法完成。要获取值,需要打开工作簿。

有一个替代方案,由@omegastripes提供,但看起来相当复杂:

How can I pick values from an Excel workbook and return them by function on active workbook

相关问题