Я использую этот код для обновления источника всех моих сводных таблиц, но я всегда получаю
«Требуется объект времени выполнения« 424 »требуется объект».
Странная часть заключается в том, что помещение кода в функцию внутри цикла на самом деле работает без этой ошибки, поэтому я не думаю, что это код функции, а то, как я ее называю.Я хотел бы знать, почему это не работает.
Private Sub Workbook_Open()
For Each st In ActiveWorkbook.Worksheets
For Each pt In st.PivotTables
UpdatePivotSource (pt)
Next
Next
End Sub
Sub UpdatePivotSource(pt As PivotTable)
Dim StartPoint As Range
Dim NewRange As String
Dim LastCol As Long
Dim lastRow As Long
Dim Data_Sheet As Worksheet
Dim DataRange As Range
Set Data_Sheet = ThisWorkbook.Worksheets(Split(pt.PivotCache.SourceData, "!")(0))
Set StartPoint = Data_Sheet.Range("A1")
LastCol = StartPoint.End(xlToRight).Column
lastRow = StartPoint.End(xlDown).Row
Set DataRange = Data_Sheet.Range(StartPoint, Data_Sheet.Cells(lastRow, LastCol))
NewRange = Data_Sheet.Name & "!" & DataRange.Address(ReferenceStyle:=xlR1C1)
pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=NewRange)
End Sub