我正在Excel中编写一个应用程序,它从多个数据库中提取数据,并在Excel 2010工作簿的工作表中显示这些数据。我从数据库中回忆起的一些数据是Excel 2010公式的形式(例如='Budget Estimate'!E46)。
在从这个数据集填充工作表中的单个单元格的过程中,我需要能够评估我正在下载的公式是否会生成#Ref!将值放入单元格之前的错误。在上面的示例中,如果存在引用的工作表,则通过VBA将该值放在单元格中可以很好地工作。如果没有,我有办法找到它,但首先我需要检测它是否会产生错误,以便最终用户不必处理弹出的对话框,询问这个孤儿的路径工作表。
答案 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
答案 1 :(得分:0)
您可以使用Evaluate
测试您的公式。尝试:
If IsError(Evaluate("='Budget Estimate'!E46")) Then
'other cool stuff here
End If
这会在将错误放入单元格之前捕获错误,但不是特定于参考错误 这将捕获公式上的所有错误。不是100%你正在寻找的答案,但HTH。