2015-06-24 80 views
0

我試圖自動篩選使用下面但是它保留返回「其他錯誤」即使有在A列上述錯誤的代碼#DIV/0的任意單元格Excel的自動篩選錯誤

Sub asdf2() 
Dim R As Range 
Set R = Range("A:A") 

If IsError(R.Value) = True Then 
    If R.Value = CVErr(xlErrDiv0) Then 
     With R 
      .AutoFilter field:=1, Criteria1:=R.Value 
     End With 
    End If 

    Else 
     Debug.Print "Some other error" 
End If 

End Sub 

回答

1

由於R是跨越整列的多單元格範圍,因此沒有.Value屬性。

調試,直到執行Set R = ...語句,然後檢查的R屬性在當地人窗口。

其次 - 解釋您的Else/Debug.Print分支,您只查看包含任何錯誤的單元格。您的Else分支也將針對包含任何錯誤的單元格而不是執行。所以,你的Else分支應連接到If

最後,你不能.Autofilter提供錯誤值作爲參數...使用字符串代替Criteria1:="#DIV/0!"

嘲笑這一切了......

Sub asdf2() 
Dim R As Range, C As Range 

    Set R = Range("A:A") 

    For Each C In R.Cells 
     Debug.Print C.Value 
     If IsError(C.Value) = True Then 
      If C.Value = CVErr(xlErrDiv0) Then 
       With R 
        .AutoFilter field:=1, Criteria1:="#DIV/0!" 
       End With 
      Else 
       Debug.Print "Other Error" 
      End If 
      Exit For 
     End If 
    Next C 
End Sub 

所以在檢測到#DIV/0這裏

  1. !誤差的自動篩選設置
  2. 上檢測到任何其他誤差的debug.print發出
  3. 否則沒有任何反應

在1,2-情況下,循環立即結束 - 沒有進一步的檢查

+0

如何我會捕捉所有類型的錯誤嗎? –

+0

你是什麼意思的「陷阱所有錯誤」...過濾器包含* any *錯誤的所有行? – MikeD