确定公式是否会返回#Ref!错误

时间:2015-01-20 05:21:31

标签: excel vba excel-vba excel-2010 formula

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

这会在将错误放入单元格之前捕获错误,但不是特定于参考错误 这将捕获公式上的所有错误。不是100%你正在寻找的答案,但HTH。