在Autofilter上使用多个条件

时间:2016-01-22 11:10:37

标签: excel vba excel-vba

我的供应商数据包含有关所有合同(正在进行和已完成)的信息。我需要过滤掉使用组合框选择的供应商的正在进行的合同。

当我在VBA中的autofilter函数中使用多个条件时,没有返回任何行。代码不会给出任何错误。

数据:

col1,col2,col3,col4,col5;
[1]supplier name,project name,start of contract(date),end of contract(date),total amount
[2]aaa,xx,01/01/2014,31/10/2016,1000000
[3]bbb,yy,01/01/2015,31/10/2016,1000000
[4]ccc,zz,01/01/2013,31/10/2015,1000000
[6]ccc,aa,01/01/2016,31/10/2016,1000000
[7]bbb,bb,01/01/2014,31/10/2014,1000000
[8]aaa,cc,01/01/2015,31/10/2016,1000000

代码:

Private Sub Workbook_Open()
sName = InputBox("supplier name?")

'ActiveSheet.AutoFilterMode = False
ActiveSheet.Range("$A$1").AutoFilter Field:=1, Criteria1:=sName
ActiveSheet.Range("$A$1").AutoFilter Field:=4, Criteria1:= _
    ">" & Date, Operator:=xlAnd
End Sub

当我删除日期标准时,代码有效,但在使用这两个条件时不会返回任何内容。

对于供应商'aaa',代码应返回2行
供应商'bbb':1行和
供应商'ccc':1行

1 个答案:

答案 0 :(得分:0)

如果您不使用美国区域设置,日期可能会在代码中出现问题。尝试将日期转换为Double:

ActiveSheet.Range("$A$1").AutoFilter Field:=4, Criteria1:=">" & CDbl(Date)