在Excel VBA中获取“不适用”
如果我在工作表单元格中使用VLOOKUP(),但找不到查找值,VLOOKUP()将返回#N/a: 我想在VBA中做同样的事情,而不把公式放在单元格中。到目前为止,我所尝试的:在Excel VBA中获取“不适用”,excel,vlookup,vba,Excel,Vlookup,Vba,如果我在工作表单元格中使用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” 上面抛出了一个1004错误 上面还抛出了一个10
Sub FailedLookup()
Dim v As Variant
v = Application.VLookup(11, Range("A1:B10"), 2, False)
MsgBox CStr(v)
End Sub
以上返回“错误2042”
上面抛出了一个1004错误
上面还抛出了一个1004错误
以上返回“错误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"
顺便说一句,您的评估版本出现错误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(…)公式)第一列工作正常。错误2042
正是\N/A
@AxelRichter……。感谢您的参考!!
If v = CVErr(xlErrNA) Then MsgBox "#N/A"
v = Evaluate("VLookup(11, A1:B10, 2, False)")
Dim v As Variant
v = Evaluate("IFERROR(VLookup(11, A1:B10, 2, False),""#N/A"")")
MsgBox v