2012-07-09 196 views
5

我想检查一个#N/A值是否与VBA相符。因此,一些研究之后,我做了这个代码:将vba中的“#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),我没有找到原因。

任何人都可以帮我解决吗?

回答

9

首先,您需要检查电池确实包含一个错误:

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 
+0

+ 1好一个:) – 2012-07-09 11:39:35

+0

感谢它:)。你到Siddharth Rout – 2012-07-09 12:22:59

4

另一个w ^唉检查错误

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

Pfffff ....你总是找到更好的方法! ;-) – assylias 2012-07-09 11:38:57

+0

我正在尝试为合并单元格(“B6:D6”)做类似的错误检查,我正在使用下面的代码并提出错误。如果CVErr(ws.Range(“B6”)。MergeArea.Cells(1,1).Value)= CVErr(xlErrNA)Then – Isu 2015-11-09 00:43:05

相关问题