VBA Excel - IFERROR& VLOOKUP错误

时间:2017-08-04 13:44:59

标签: excel-vba excel-2010 vba excel

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

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中实现相同结果的最佳替代方案?

1 个答案:

答案 0 :(得分:0)

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

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

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然后测试结果来延迟绑定。

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