2012-07-09 117 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