Excel VBA – 在一组date自动筛选date列

我仍然在学习Excel VBA,如果有人能帮助我解决这个问题,我将不胜感激。 我想根据名为DateMaster的表中指定的startDate和endDate过滤date列。 当我运行macros,它给了我运行时错误13,开始date= 0.下面是我的代码。

Sub FIlterCopy() Dim StartDate As Long Dim EndDate As Long StartDate = ThisWorkbook.Worksheets("DateMaster").Range("C2").Value EndDate = ThisWorkbook.Worksheets("DateMaster").Range("D2").Value Application.ScreenUpdating = False ThisWorkbook.Worksheets("FilterMaster").Activate Range("A:BA").Select Selection.ClearContents Application.Workbooks.Open ("C:\WRI\Data\Revenue Update.xls") Windows("Revenue Update.xls").Activate Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:= _ "=Backlog", Operator:=xlOr, Criteria2:="=RMA" Selection.AutoFilter Field:=29, Criteria1:= _ "=Direct" Selection.AutoFilter Field:=20, Criteria1:=">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate Application.ScreenUpdating = True End Sub 

如果将StartDateEndDate设置为Long ,则应在自动筛选器上使用CDate命令

 Selection.AutoFilter Field:=20, Criteria1:=">=" & CDate(StartDate), Operator:=xlAnd, Criteria2:="<=" & CDate(EndDate) 

否则,将这两个variables定义为Date