【问题标题】:Auto-filter returns no row: skip next steps自动过滤器不返回任何行:跳过后续步骤
【发布时间】:2020-06-20 23:16:53
【问题描述】:

我正在构建一个异常报告,在应用一系列自动过滤器后突出显示缺失/不准确的数据。 问题: 1)当自动过滤器之一没有返回结果/没有行时,着色代码将颜色应用于数据范围内的所有单元格。 2)报告在某些周可能有结果/行,某些周自动过滤器不会有任何结果/行

需要指导:看看下面的代码,谁能告诉我如果 BBB 标题中的自动过滤器没有连续返回,我该如何跳过着色/突出显示?而是转到 CCC 标题过滤器。

With ActiveSheet.ListObjects("Table_query__57")
          .Range.AutoFilter Field:=a, Criteria1:=Array("BCH", "HS", "L"), 
           Operator:=xlFilterValues
                
       'BBB 
          .Range.AutoFilter Field:=i, Criteria1:="Approved"

'if autofilter returns no result, i want to skip next this function
          .ListColumns(p).DataBodyRange.Interior.Color = RGB(255, 0, 0)
    
'start function here
          .Range.AutoFilter Field:=i  

【问题讨论】:

  • Mech:我可以请你证明你的意思吗?也许改变我的一组代码
  • 在 cmets 中很难做到,这不是答案,所以我不想误导未来的 SO'ers。加入chat.stackoverflow.com/rooms/216344/vba-wb-ws
  • 不幸的是,我没有 20 个声望可以聊天。有什么其他的交流方式吗?也许使用“回答问题”
  • 也许其他人也会投票给你,这样你就可以:)

标签: excel vba autofilter


【解决方案1】:

计算应用过滤器后得到的行数。如果结果为 1,则忽略。

假设过滤器位于 B 列

Dim Visible_cells As Long
ActiveSheet.Range("B4:B1000").AutoFilter Field:=1, Criteria1:="Your condition", Operator:=xlAnd
Visible_cells = Range("B4:B1000").SpecialCells(xlCellTypeVisible).Rows.Count

If Visible_cells > 1 Then ' code will continue only if the visible cells is more than 1
    ' Continue your code
Else
End If

【讨论】:

  • 我正在过滤第 4 行中名为“ID”(第 2 列)的标题表,但在标题下找不到结果或数据行?我需要跳过为单元格 rgb 255 着色。“做某事”应该是什么?
  • 不幸的是,当没有自动过滤结果时,它仍在为所有单元格着色。可能是因为我正在使用 Datarange 函数吗?
猜你喜欢
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
相关资源
最近更新 更多