Andrzej Borowicz Transport
Temat: Metoda Add Fields z klasy PivotTable nie powiodła się
WitamJako, że jestem mocno początkującym w wykorzystaniu języka VBA w pracy Excela, nie potrafię sobie poradzić z problemem.
Mam tabelę, w której codziennie będzie przybywało kilkadziesiąt rekordów. Z tej tabeli codziennie potrzebuję wyciągnąć kilka informacji, to będą stale te same informacje. Zasadne więc jest wykorzystanie tabeli przestawnej, ale chciałem uniknąć codziennego kilkukrotnego klikania w kreatorze tabeli przestawnej, aby te dane uzyskać. Zdobyłem kod automatyzujący tę czynność. Niestety mimokilkukrotnego sprawdzenia kodu wyskakuje mi komunikat jak w temacie. Nie wiem już co mam zrobić, aby usunąć problem. Może ktośmądrzejszy odemnie naprowadzi mnie na błąd ?. Poniżej problematyczny kod: Proszę o pomoc :)
Sub Odśwież()
Dim WSD As Worksheet
Dim WSD2 As Worksheet
Dim PTCache As PivotCache
Dim PT As PivotTable
Dim PRange As Range
Dim FinalRow As Long
Dim FinalCol As Long
Set WSD = Worksheets("Arkusz3")
Set WSD2 = Worksheets("Zlecenia")
'Kasowanie poprzedniej tabeli przestanej
For Each PT In WSD.PivotTables
PT.TableRange2.Clear
Next PT
'Określanie zakresu danych w tabeli wyjściowej
FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row
FinalCol = WSD.Cells(1, Columns.Count). _
End(xlToLeft).Column
Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, FinalCol)
Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:= _
xlDatabase, SourceData:=PRange)
'Tworzenie tabeli przestawnej
Set PT = PTCache.CreatePivotTable(TableDestination:=WSD. _
Cells(4, 1), TableName:="Dane")
'Aktualizacja danych w tabeli
PT.ManualUpdate = True
'Określanie nagłówków w kolumnach i wierszach
PT.AddFields RowFields:=Array("Samochód"), _
ColumnFields:="Kierowca"
'Określanie wartości wyświetlanych w tabeli
With PT.PivotFields("Fracht")
.Orientation = xlDataField
.Function = xlSum
.Position = 1
End With
With PT.PivotFields("Data wyst")
.Orientation = xlPageField
.Position = 1
End With
'Obliczanie tabeli
PT.ManualUpdate = False
WSD.Activate
End Sub
Tutaj stale wyskakuje mi błąd - pogubiona linia kodu.
PT.AddFields RowFields:=Array("Samochód"), _
ColumnFields:="Kierowca"
Tak wygląda tabelka, dane są oczywiście zupełnie przypadkowe:
[img]
/img]