2017-04-03 53 views
1

我正在使用Microsoft Excel中的VBA中的AutoFilters。我有一个问题,它如何处理阵列的过滤带有空白下拉菜单的excel宏

我已经创建宏和自动过滤器如下。

ActiveSheet.Range("$A$1:$AC$500").AutoFilter Field:=15, Criteria1:="Not Met" 

但在排一些时候,我不会得到与“不符合”的条件和下拉电话就是在那个时候我的宏给了错误和不进步空的,如何在走到这一步,是有什么我可以声明,如果没有匹配发现只复制头。

+0

什么是你的完整的代码? – sktneer

+0

我想我得到的解决方案'ActiveSheet.Range(“$ A $ 1:$ AC $ 500”)。AutoFilter Field:= 14,Criteria1:=“Not Met”,_ Operator:= xlOr,Criteria2:=“*” ' – Kittu

回答

0

一旦你已经过滤出的结果,你可以使用SpecialCells来测试,如果你发现任何结果

Sub Test() 
    With ThisWorkbook.Worksheets("Sheet1").Range("A1:AC500") 
     .AutoFilter Field:=15, Criteria1:="Not Met" 
     If .SpecialCells(xlCellTypeVisible).Count > .Columns.Count Then 
      'results found 
     Else 
      'results not found 
     End If 
    End With 
End Sub 
+0

代码正在工作..感谢 – Kittu

0

,你可以采取以下方式:

With Worksheets("MySheetName") '<--| change "MySheetName" to your actual sheet name and avoid referring to ActiveSheet which can be deceiving 
    With .Range("AC", .Cells(.Rows.Count, 1).End(xlUp)) '<--| reference its columns A:AC cells from row 1 down to column A last not empty one 
     .AutoFilter Field:=15, Criteria1:="Not Met" 
     If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then '<--| if any filered cells other than headers 
      With .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible) '<--| reference filtered cells skipping headers 
       ' your code to handle filtered data 
      End With 
     Else 
      ' your code to handle no data match condition 
     End If 
    End With 
    .AutoFilterMode = False '<-- remove autofilter 
End With 
+0

谢谢我会尽力... – Kittu

+0

这两个代码工作完美谢谢 – Kittu