检查整个范围是否隐藏的一致方法
我有一个广泛的代码,用于调整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