检查整个范围是否隐藏的一致方法

我有一个广泛的代码,用于调整filter和读取独特的值到combobox等,它的工作几乎完美,但是这一行代码有时不正确(只有当我过滤某些值,虽然看起来)。 如果所有的行由于通过makro应用的filter而被隐藏,则应该防止错误。

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 

但是即使整个范围被隐藏,也会find单元格。

我会很高兴任何解决scheme,可以帮助我环绕xlCellTypeVisible错误(当RangeCombo中的所有单元格都为空时)或任何其他方式,我可能实现我的目标。

在检查自动过滤的单元格时,始终在范围中包含标题行,并检查可见单元格数是否大于1,如下所示…

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

LastRow是表单上最后一行的数据。 根据您的要求更改范围。

如果在应用自动筛选器之后没有返回行,则计数将等于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