检查整个范围是否隐藏的一致方法
Consistant way to check if entire range is hidden
我有大量代码用于调整过滤器并将唯一值读入组合框等,它几乎完美地工作,但是这一行代码有时无法正确识别(仅当我过滤某些值时看起来).它应该防止错误,以防所有行由于已通过 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 中的所有单元格都为空时)或任何其他可能实现我的目标的方式,我会很高兴。
检查自动过滤的单元格时,请始终在范围内包含 header 行,并检查可见单元格计数是否大于 1,如下所示...
If Range("A1:A" & LastRow).SpecialCells(xlCellTypeVisible).Count > 1 Then
其中 LastRow 是 sheet 上数据的最后一行。
根据您的要求更改范围。
如果应用自动筛选后没有返回任何行,则计数将等于 1,因为只有 header 行可见,您可以跳过对可见 rows/cells.[=11 执行某些操作=]
忽略错误通常是不可取的,但在某些情况下它是合法的。所以,你可以这样做
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
我有大量代码用于调整过滤器并将唯一值读入组合框等,它几乎完美地工作,但是这一行代码有时无法正确识别(仅当我过滤某些值时看起来).它应该防止错误,以防所有行由于已通过 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 中的所有单元格都为空时)或任何其他可能实现我的目标的方式,我会很高兴。
检查自动过滤的单元格时,请始终在范围内包含 header 行,并检查可见单元格计数是否大于 1,如下所示...
If Range("A1:A" & LastRow).SpecialCells(xlCellTypeVisible).Count > 1 Then
其中 LastRow 是 sheet 上数据的最后一行。 根据您的要求更改范围。
如果应用自动筛选后没有返回任何行,则计数将等于 1,因为只有 header 行可见,您可以跳过对可见 rows/cells.[=11 执行某些操作=]
忽略错误通常是不可取的,但在某些情况下它是合法的。所以,你可以这样做
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