【问题标题】:Determine if formula will return #Ref! error确定公式是否会返回#Ref!错误
【发布时间】:2023-03-14 05:34:01
【问题描述】:

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

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

【问题讨论】:

  • stackoverflow.com/questions/16105884/…,这个问题已经有答案了
  • I need to be able to evaluate if the formula I'm downloading will generate an #Ref! error in advance of placing the value in the cell 所以我认为链接中提供的答案并未涵盖@TimWilliams
  • @L42 你是对的 - 撤回我的近距离投票

标签: vba excel excel-2010 formula


【解决方案1】:
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

【讨论】:

  • 蒂姆-谢谢。这是理想的,并且将在我将来需要测试特定错误的情况下合并此子例程。非常感谢您如此迅速的回复和您的专业知识。再次感谢您。
【解决方案2】:

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

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

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

【讨论】:

  • TTH! (这完全有帮助!) - 我知道我的问题是针对该特定错误的,但现实是我不在乎错误是什么,只要我能提前检测到有一个错误,并且您在上面提供的功能确实如此这完美。谢谢!
  • @Y2kShea 允许跟进,只要不偏离您的问题太多。好吧,Evaluate 似乎不适用于封闭的工作簿。我对其进行了测试,并且能够复制您所描述的内容。如果是这种情况,您将不得不使用另一种方法。但是你想要的仍然是可能的。 :-)
猜你喜欢
  • 2022-01-22
  • 2020-04-11
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
相关资源
最近更新 更多