VBA跳过筛选条件

时间:2017-06-05 08:38:09

标签: vba excel-vba excel

您好我有以下代码,我希望使用VBA过滤Excel中的列表,每个列表将根据我选择的公司而有所不同。

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”,并且当发生这种情况时代码会中断。有没有办法可以添加到此'如果列表中存在NDS然后使用过滤器,否则跳过NDS作为过滤器'

非常感谢提前

1 个答案:

答案 0 :(得分:2)

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

此处的语法对于多个条件的过滤不正确。虽然有Criteria2,但此方法没有Criteria3等等。

如果要过滤多个值,则应使用带Criteria1的数组:

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

另请注意@ YowE3K指出的操作员更改为xlFilterValues