2017-05-18 66 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 
相关问题