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

我想检查一个#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) ,我不明白为什么。

任何人都可以帮我吗?

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

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

除非你想知道错误types(#N / A,#DIV / 0 !,等等),否则你可以用下面的代码replace你的testing:

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

如果你需要检查错误types,你可以写:

 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 

另一种检查错误的方法

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