关于VBA Excel:VBA Excel-IFERROR和VLOOKUP错误

VBA Excel - IFERROR & VLOOKUP error

我正在尝试在excel VBA中创建等效于= IFERROR(VLOOKUP(),-1)公式的公式,该函数将在我的数据表中查找文本,如果文本在表中,则返回第5列中的数字 如果不是,则为-1。 我已经在excel中测试了上面的公式,它给了我想要的结果,问题是当我在VBA中对其进行编码时,我不断得到#VALUE! 如果文本不在表中,则错误。 如果文本在表中,则代码将生成所需的数字。 我的代码如下:

1
2
3
4
5
Function CCC(A As Variant)
Dim B As Variant
B = Application.WorksheetFunction.IfError(Application.WorksheetFunction.VLookup(A, Sheets("DAP").Range("$B$4:$X$7"), 5, False), -1)
CCC = B
End Function

考虑到这一点,是否有一种方法可以修复代码,以使IFERROR(VLOOKUP)起作用,如果不能,那么在VBA中实现相同结果的最佳选择是什么?


如果找不到该值,使用Application.WorksheetFunction.VLookup(将破坏代码。

将其包装在vba错误控制中。

1
2
3
4
5
6
7
8
9
Function CCC(A As Range)
Dim B As Variant
B = -1
On Error Resume Next
B = Application.WorksheetFunction.VLookup(A.Value, Sheets("DAP").Range("$B$4:$X$7"), 5, False)
On error goto 0
CCC = B

End Function

另一种方法是通过删除.WorksheetFormula进行后期绑定,然后测试结果。

1
2
3
4
5
6
7
8
9
Function CCC(A As Range)
Dim B As Variant
B = Application.VLookup(A.Value, Sheets("DAP").Range("$B$4:$X$7"), 5, False)
If IsError(B) Then
    CCC = -1
Else
    CCC = B
End If
End Function