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

Adr*_* A. 5 error-handling excel vba excel-vba

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

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
Run Code Online (Sandbox Code Playgroud)

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

任何人都可以帮助我PLZ?

ass*_*ias 10

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

If IsError(MyTab(i, j).Value) Then
    If MyTab(i, j).Value <> CVErr(xlErrNA) Then
Run Code Online (Sandbox Code Playgroud)

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

If (Not IsEmpty(MyTab.value)) And (Not IsError(MyTab(i, j).value)) Then
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)


Sid*_*out 6

另一种检查错误的方法

If CVErr(MyTab(i, j).Value) = CVErr(xlErrNA)
Run Code Online (Sandbox Code Playgroud)