在Excel 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

如果我在工作表单元格中使用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错误

上面还抛出了一个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