5

我想#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

但是当它传递时MyTab(i, j).value <> CVErr(xlErrNA)我有一个错误13(type error),我不知道为什么。

任何人都可以帮助我吗?

4

2 回答 2

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
于 2012-07-09T11:34:05.557 回答
6

另一种检查错误的方法

If CVErr(MyTab(i, j).Value) = CVErr(xlErrNA)
于 2012-07-09T11:36:55.270 回答