我正在尝试在 Excel VBA 中创建与 =IFERROR(VLOOKUP(),-1) 公式等效的内容,其中该函数将在数据表中查找文本,如果文本位于表中,则返回第五列中的数字如果不是,则为 -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 中实现相同结果的最佳替代方案是什么?
Using 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)