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 に答える