Ошибка времени выполнения "424" Требуемые объекты Сводные таблицы фильтра - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь отфильтровать сводную таблицу между двумя датами, указанными в O2 и O3, и не могу избавиться от этой ошибки.Любая помощь будет принята.

Sub MyFilter()

Dim pvtfld As PivotField
Dim pvtfil As PivotFilter
Dim pvtfils As PivotFilters

Set pvtfld = ThisWorkbook.Sheets("Sheet1").PivotTables("PivotTable1").PivotFields("Date")

For Each pvtfil In pvtfld.PivotFilters

Next pvtfil

Set pvtfil = pvtfils.Add(xlDateBetween, Date, O2, O3, xlDescending)

End Sub

Ошибка, как показано ниже.

Ошибка 424 Требуемый объект появляется в строке set pvtfil.

1 Ответ

0 голосов
/ 03 июля 2019

Фильтру даты для сводного поля требуется два String, которые Excel может интерпретировать как значения даты (ни Date значения, ни Range объекты не могут быть назначены непосредственно в моей немецкой версии Excel!).

Поэтому я использую две переменные даты "o2" и "o3", которые

  • прочитано с Range.Value
  • конвертируется в даты на CDate (необязательно, если вы уже использовали значения даты в своих ячейках)
  • преобразовано в строки по CStr

Sub MyFilter()
    Dim pvtfld As PivotField
    Dim pvtfil As PivotFilter

    Dim o2 As Date
    Dim o3 As Date

    With ThisWorkbook.Sheets("Sheet1")
        Set pvtfld = .PivotTables("PivotTable1").PivotFields("Date")
        o2 = CDate(.Range("O2").Value) ' just to ensure, they are dates
        o3 = CDate(.Range("O3").Value)
        Debug.Print CStr(o2), CStr(o3)
        pvtfld.ClearAllFilters
        Set pvtfil = pvtfld.PivotFilters.Add2(Type:=xlDateBetween, Value1:=CStr(o2), Value2:=CStr(o3), Order:=xlDescending)
    End With
End Sub
...