如果我在工作表单元格中使用VLOOKUP()而找不到查找值,则VLOOKUP()将返回#N / A:
我想在VBA中做同样的事情而不将公式放在单元格中。到目前为止我尝试过的是:
Sub FailedLookup()
Dim v As Variant
v = Application.VLookup(11, Range("A1:B10"), 2, False)
MsgBox CStr(v)
End Sub
以上返回“错误2042”
Sub FailedLookup2()
Dim v As Variant
v = WorksheetFunction.VLookup(11, Range("A1:B10"), 2, False)
MsgBox CStr(v)
End Sub
上面引发了1004错误
Sub FailedLookup3()
Dim v As Variant
v = Application.WorksheetFunction.VLookup(11, Range("A1:B10"), 2, False)
MsgBox CStr(v)
End Sub
上面也抛出了1004错误
Sub FailedLookup4()
Dim v As Variant
v = Evaluate("VLookup(11, Range(""A1:B10""), 2, False)")
MsgBox CStr(v)
End Sub
上面返回“错误2029”。
我可以通过以下方式获得#N / A:
Sub IsThisReallyNecessary()
With Range("Z100")
.Formula = "=VLookup(11,A1:B10, 2, False)"
MsgBox .Text
End With
End Sub
但这也使用一个单元。有没有一种简单的方法来获取#N / A?
最佳答案
我认为您需要明确检查该错误:
If v = CVErr(xlErrNA) Then MsgBox "#N/A"
顺便说一句,您的
Evaluate
版本出现错误2029的原因是:v = Evaluate("VLookup(11, A1:B10, 2, False)")
您还可以调整传递给
Evaluate
的公式: Dim v As Variant
v = Evaluate("IFERROR(VLookup(11, A1:B10, 2, False),""#N/A"")")
MsgBox v
(如果第二栏中可能有错误值,请改用IF(ISNA(...)公式)
关于excel - 在Excel VBA中获得#N/A,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34772294/