检查vba中的“#N / A”值到一个范围内

时间:2012-07-09 11:19:54

标签: excel vba error-handling excel-vba

我想用VBA检查excel中的#N/A值。经过一些研究,我制作了这段代码:

Set MyTab = Range(name)
If (Not IsEmpty(MyTab.value)) And (MyTab(i, j).value <> CVErr(xlErrNA)) Then
   Call BuildRequest(False, id, MyTab, i, j)
End If

但是当它传递给MyTab(i, j).value <> CVErr(xlErrNA)时,我发现了一个错误13(type error)而且我找不到原因。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:10)

首先需要检查单元格是否包含错误:

If IsError(MyTab(i, j).Value) Then
    If MyTab(i, j).Value <> CVErr(xlErrNA) Then

除非您确实想知道错误的类型(#N / A,#DIV / 0!等),否则您也可以用以下内容替换您的测试:

If (Not IsEmpty(MyTab.value)) And (Not IsError(MyTab(i, j).value)) Then

如果您需要检查错误类型,可以写:

Dim shouldBuildRequest As Boolean

shouldBuildRequest = Not IsEmpty(MyTab.value)
If IsError(MyTab(i, j).Value) Then
    shouldBuildRequest = shouldBuildRequest AND (MyTab(i, j).Value <> CVErr(xlErrNA))
End If

If shouldBuildRequest Then
    Call BuildRequest(False, id, MyTab, i, j)
End If

答案 1 :(得分:6)

检查错误的另一种方法

If CVErr(MyTab(i, j).Value) = CVErr(xlErrNA)