2017-05-18 69 views
0

我有一個廣泛的代碼用於調整過濾器並將獨特的值讀入組合框等,它的工作幾乎完美,但是這一行代碼有時無法正確識別(只有當我儘管看起來過濾某些值)。由於通過makro應用的過濾器,所以應該防止所有行被隱藏的錯誤。檢查整個範圍是否隱藏的一致方法

If RangeCombo.EntireRow.Hidden = False Then 

RangeCombo同時包含隱藏和取消隱藏行,當它的工作原理,當它沒有,所以我真的不知道這可能是導致此。我試過這個:

If RangeCombo.SpecialCells(xlCellTypeVisible).Count > 0 Then 

但它會拋出一個錯誤,如果在該範圍內沒有可見的單元格。

我也試過:

Set x = RangeCombo.Find("*", , xlFormulas, xlWhole) 
    If Not x Is Nothing Then 

但會發現細胞,即使整個範圍內被隱藏...

我很樂意爲任何解決方案,可以幫助我環航xlCellTypeVisible錯誤(當RangeCombo中的所有單元都爲空時)或其他任何方式都可能實現我的目標。

回答

1

在檢查autofiltered細胞,始終包括該範圍內的標題行,並檢查可見細胞計數大於1像下面...

If Range("A1:A" & LastRow).SpecialCells(xlCellTypeVisible).Count > 1 Then 

哪裏LASTROW是最後一行與數據表格。 根據您的要求更改範圍。

如果沒有行應用自動篩選後返回,計數應該等於1個,因爲只有標題行是可見的,您可以跳過做上可見行/細胞的一些行動。

+0

哇,很簡單,但解決了這個問題。這正是我期待的提示。謝謝! –

1

忽略錯誤通常不建議,但在某些情況下是合法的。所以,你可以這樣做

Sub x() 

Dim r As Range 

On Error Resume Next 
Set r = RangeCombo.SpecialCells(xlCellTypeVisible) 
On Error GoTo 0 

If Not r Is Nothing Then 
    MsgBox "Visible" 
Else 
    MsgBox "All hidden" 
End If 

End Sub 
相關問題