2017-04-03 37 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