确定公式是否 return #Ref!错误

Determine if formula will return #Ref! error

我正在 Excel 中编写一个应用程序,它从多个数据库中提取数据并在 Excel 2010 工作簿的工作表中显示这些数据。我从数据库中回忆起的一些数据采用 Excel 2010 公式的形式(例如 ='Budget Estimate'!E46)。

在从该数据集填充工作表中的单个单元格的过程中,我需要能够评估我正在下载的公式是否会生成 #Ref!将值放入单元格之前出错。在上面的示例中,通过 VBA 将该值放置在单元格中效果很好,前提是它引用的工作表存在。如果没有,我有办法找到它,但首先我需要检测它是否会产生错误,这样最终用户就不必处理弹出的对话框,询问这个孤立的路径工作表。

您可以使用 Evaluate 测试您的公式。尝试:

If IsError(Evaluate("='Budget Estimate'!E46")) Then
    'other cool stuff here
End If

这将在您将错误放入单元格之前捕获错误,但并非特定于引用错误。
这将捕获公式中的所有错误。并非真正 100% 是您要寻找的答案,而是 HTH。

Sub Tester()

    Dim v
    v = Application.Evaluate("=Sheet999!A1")

    If IsError(v) Then
        Select Case v
            Case CVErr(xlErrRef): Debug.Print "#ref!"
            Case CVErr(xlErrDiv0): Debug.Print "#div by zero!"
            'etc
        End Select
    End If

End Sub

参见:http://www.cpearson.com/excel/ReturningErrors.aspx