2017-06-05 108 views
0

嗨我有下面的代码,我希望使用VBA来筛选Excel中的列表,每个列表将根据我选择的公司而有所不同。VBA跳过筛选器条件

With wsDest.Rows(1) 
.AutoFilter field:=3, Criteria1:="Swap", Operator:=xlOr, Criteria2:="FwdSwap", Operator:=xlOr, Criteria3:="NDS" 
    If wsDest.Range("C1:C" & lr).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then 
    wsDest.Range("G2:G" & lr).SpecialCells(xlCellTypeVisible).Copy wsDest.Range("J" & Rows.Count).End(3)(2) 
    End If 
.AutoFilter 
End With 

wsDest是我的工作在工作表中,代码工作正常,只是很多我正在筛选中不包含“NDS”和代码休息时,发生这种情况的列表。有没有一种方法可以让我提前

+0

指出,目前的变化没有' Criteria3'参数 - 请参阅:https://msdn.microsoft.com/en-us/library/office/ff193884.aspx。你可能也想检查一下:https://stackoverflow.com/questions/21834701/use-autofilter-on-more-than-2-criteria。不知道它是否重复。 –

+0

是否只要数据中存在“NDS”条目,并且只有在数据中没有“NDS”条目时才会崩溃,那么发布的代码才有效? – YowE3K

回答

2
.AutoFilter field:=3, Criteria1:="Swap", Operator:=xlOr, Criteria2:="FwdSwap", Operator:=xlOr, Criteria3:="NDS" 

你的语法这里加入到这个“如果NDS在列表中存在,然后使用过滤器,否则跳过NDS作为过滤器”

非常感谢是不正确的过滤功能多重标准。虽然存在Criteria2,但此方法没有Criteria3等等。如果要过滤的多个值

,你应该使用一个数组Criteria1

.AutoFilter Field:=3, Criteria1:=Array("Swap", "FwdSwap", "NDS"), Operator:=xlFilterValues 

还要注意在操作员到xlFilterValues由@ YowE3K

+0

@ YowE3K好点,更正:) – Carrosive

+0

太棒了,非常感谢你们 – Ollie