按单元格值筛选数据透视表,错误1004 VBA

时间:2019-01-29 15:56:53

标签: excel vba pivot-table

我有一个数据透视表,我想根据其中在2个单元格中输入的开始日期和结束日期来过滤发票/发货日期。我有以下代码,但始终收到错误“ 1004-应用程序定义或对象定义的错误”

请帮助..我正在使用Excel 2016

Dim Invoice_Start_Date As Date
Dim Invoice_End_Date As Date
Invoice_Start_Date = CDate(Worksheets("Despatch Template").Cells(17, "F").Value)
Invoice_End_Date = CDate(Worksheets("Despatch Template").Cells(17, "G").Value)
Sheets("Despatch Template").Select

MsgBox IsDate(Invoice_End_Date)
MsgBox IsDate(Invoice_Start_Date)

ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
ActiveSheet.PivotTables("PivotTable1").PivotFields("DESPATCH 
DATE").ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("DESPATCH 
DATE").PivotFilters.Add2 _
Type:=xlDateBetween, Value1:=CLng(Invoice_Start_Date), 
Value2:=CLng(Invoice_End_Date)

msgbox仅在测试日期时返回TRUE。

我已经尝试了几乎可以在网上找到的所有内容,但无法正常工作。 谢谢

C

2 个答案:

答案 0 :(得分:0)

问题是您要使用Long将日期值转换为CLng数据类型,然后尝试对这些Long值进行日期过滤。只需从此行中删除CLng

Type:=xlDateBetween, Value1:=CLng(Invoice_Start_Date), Value2:=CLng(Invoice_End_Date)

答案 1 :(得分:0)

我找到了答案..这是由于源数据在某些单元格中具有非日期值..一旦我将其更改为实际日期,代码就可以正常工作。