Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何捕捉#REF!在Excel中?_Vba_Excel_Excel Formula - Fatal编程技术网

Vba 如何捕捉#REF!在Excel中?

Vba 如何捕捉#REF!在Excel中?,vba,excel,excel-formula,Vba,Excel,Excel Formula,我想知道如何捕获#REF错误 我能够通过以下代码捕获中的错误: If WorksheetFunction.IsError(ActiveCell) Then If ActiveCell.Value = CVErr(xlErrRef) Then ActiveCell.Value = "Error" End If End If 我想在Excel公式栏中编写相同的函数。有什么办法吗 谢谢。您可以在公式栏中使用iError并检

我想知道如何捕获
#REF错误

我能够通过以下代码捕获中的错误:

    If WorksheetFunction.IsError(ActiveCell) Then
         If ActiveCell.Value = CVErr(xlErrRef) Then
              ActiveCell.Value = "Error"
         End If
   End If
我想在Excel公式栏中编写相同的函数。有什么办法吗


谢谢。

您可以在公式栏中使用iError并检查是否正确

这只用于识别isref错误
=iError(如果(ERROR.TYPE(A1)=4,“Ref ERROR”,A1),“All GOOD”)

您可以使用公式
IF(iError(ActiveCell),“ERROR”)


但是,这也将捕获所有其他错误。

请注意,单元格将只返回计算公式时遇到的第一个错误,因此如果单元格在
\Ref!之前出现
\Name?
错误错误,无法捕获潜在的
#Ref错误

可能是这样的:

=和(ISREF(A1),ISER(A1))

首先测试单元格是否包含引用,然后检查是否也包含错误

我修改使用
IsErr
而不是
IsError
来忽略
N/A
类型错误。

=IF(IsError(A1),ERROR.type(#REF!)=ERROR.type(A1),FALSE)


在#ref上返回true,在所有其他错误上返回false或无错误。

好的,ISERROR()将捕获所有错误。我想了解一下#REF!试着用这个=ERROR.TYPE(#REF!)来做点什么---=IF(ERROR.TYPE(A1)=4,“ERROR”,“All good”)。。如果错误类型为#ref,则“error”表示除error之外的“all good”。如果单元格中没有错误,type将返回N/A。OP的另一个缺点是公式可以包含多个错误条件,但单元格值将仅显示遇到的第一个错误,这可能无关紧要。例如,
=SheetDoesNotExist!A1+badname
将给出一个
#Ref错误,而
=badName+SheetDoesNotExist!A1
将给出一个
#名称?
错误。是的,您是对的。然而,我只想抓住#REF!错误您可能需要将
IsError
公式与
IsRef
公式相结合。请看下面我的建议。请看,在同一公式中可以有ref和不同类型的错误。考虑<代码> = B5+BADNEX/CODE >你可以用4代替错误。类型(α-Ref!),但是我认为这使得你做的更清楚。