我有一个广泛的代码,用于调整过滤器并将唯一值读取到组合框等中,并且它几乎完美地工作,但是这一行代码有时无法正确识别(仅当我过滤某些值时)它似乎)。如果由于通过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中的所有单元格都为空时)或任何其他方式我可能实现我的目标。
答案 0 :(得分:1)
在检查自动过滤的单元格时,始终在该范围内包含标题行,并检查可见单元格数是否大于1,如下所示...
If Range("A1:A" & LastRow).SpecialCells(xlCellTypeVisible).Count > 1 Then
其中LastRow是工作表上包含数据的最后一行。 根据您的要求更改范围。
如果在应用自动过滤后没有返回任何行,则计数将等于1,因为只有标题行可见,您可以跳过对可见行/单元格执行某些操作。
答案 1 :(得分: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