Фильтрация сводной таблицы по значениям ячеек, ошибка 1004 VBA - PullRequest
0 голосов
/ 29 января 2019

У меня есть сводная таблица, в которой я хотел бы отфильтровать дату выставления счета / отправки на основе даты начала и окончания, введенной в 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 голосов
/ 30 января 2019

Я нашел ответ .. это произошло из-за того, что в исходных данных в некоторых ячейках были значения, отличные от даты ... после того, как я изменил их для фактических дат, код работал правильно.

0 голосов
/ 29 января 2019

Проблема в том, что вы конвертируете свои значения даты в Long типы данных с CLng, а затем пытаетесь датировать эти значения Long.Просто удалите CLng из этой строки:

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