Ошибка времени выполнения 5 - Excel Date Slicer - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь добавить слайсер в сводную таблицу. Я успешно создаю кэш слайсера из сводной таблицы, но сам слайсер зависает либо из-за ошибки 483 времени выполнения (объект не поддерживает это свойство или метод), либо из-за ошибки времени выполнения 5 (неверный вызов процедуры или аргумент ). Последнее происходит со следующей конфигурацией кода. Ошибка возникает со строкой Set slicer = .Slicers.Add(pvt, , "Date", "date", 200, 250, 200, 200)

Option Explicit

Sub SVBsweep_pivot()

Dim wb As Workbook
Dim ws As Worksheet
Dim pvtws As Worksheet
Dim scrcdatar As Range
Dim scrcdatas As String
Dim pvt As PivotTable
Dim pf As PivotField
Dim pvtcache As PivotCache
Dim slccache As SlicerCache
Dim slicer As slicer

Set wb = ActiveWorkbook
Set ws = ActiveSheet
ws.Name = "data"
Set pvtws = Sheets.Add
pvtws.Name = "pivot"

With ws
Set scrcdatar = Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell))
scrcdatas = .Name & "!" & scrcdatar.Address(ReferenceStyle:=xlR1C1)
Set pvtcache = ActiveWorkbook.PivotCaches.Create(xlDatabase, scrcdatas)
End With

Set pvt = pvtcache.CreatePivotTable(pvtws.Range("A3"), "Payroll")

With pvt
    .PivotFields("Transaction").Orientation = xlColumnField
    .PivotFields("Sweep Product").Orientation = xlRowField
    .AddDataField .PivotFields("Amount"), "SumAmount", xlSum
    .DataBodyRange.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(*  - ??_);_(@_)"
    .ColumnGrand = True
    .RowGrand = False

    For Each pf In pvt.RowFields
        pf.DrillTo pf.Name
    Next pf
    For Each pf In pvt.ColumnFields
        pf.DrillTo pf.Name
    Next pf

End With

With wb
    Set slccache = .SlicerCaches.Add2(pvt, "Date", "Date", xlTimeline)
    With slccache    
        Set slicer = .Slicers.Add(pvt, , "Date", "date", 200, 250, 200, 200)
    End With
    With pvtws
        .Shapes.Range(Array("Date")).Select
    End With
End With
End Sub

1 Ответ

0 голосов
/ 05 мая 2018

Синтаксис Slicers.Add Method (Excel):

expression.Add(SlicerDestination, Level, Name, Caption, Top, Left, Width, Height)

У вас есть PivotTable как SlicerDestination

Заменить эти строки:

With wb
    Set SlcCache = .SlicerCaches.Add2(Pvt, "Date", "Date", xlTimeline)
    With SlcCache
        Set Slicer = .Slicers.Add(Pvt, , "Date", "date", 200, 250, 200, 200)
    End With
    With PvtWs
        .Shapes.Range(Array("Date")).Select
    End With
End With

с этими строками:

Set SlcCache = wb.SlicerCaches.Add2(Pvt, "Date", "Date", xlTimeline)
Set Slicer = SlcCache.Slicers.Add(PvtWs, , "Date", "date", 200, 250, 200, 200)
PvtWs.Shapes.Range(Array("Date")).Select
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...