确定公式是否 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
我正在 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