Witaj.
Odpowiem nie wprost.
To co chcesz zrobić, robię w poniższy sposób:
W arkuszu BAZA definiuję nazwę (z menu:wstaw / nazwa /definiuj):
-nazwa w skoroszycie: dane
-odwołuje się do: =PRZESUNIĘCIE(BAZA!$A$1;0;0;ILE.NIEPUSTYCH(BAZA!$A:$A);ILE.NIEPUSTYCH(BAZA!$1:$1))
I na podstawie tej nazwy tworzę tabelę, która zawsze będzie widziała cały zakres danych.
W module arkusza z tabelą przestawną wstawiam kod, ktorego zadaniem jest aktualizacja tabeli w momencie "wejścia" do akusza:
Sub Worksheet_Activate()
ActiveSheet.PivotTables(1).RefreshTable
End Sub
lub (podpowiadane wartości pól po pewnym czasie używania zmieniającej się tabeli zawierają wiele nieaktualnych już wartości)
Private Sub XWorksheet_Activate()
Dim pf As PivotField, pi As PivotItem
Application.ScreenUpdating = False
With ActiveSheet.PivotTables(1)
.RefreshTable
For Each pf In .PivotFields
For Each pi In pf.PivotItems
If pi.RecordCount = 0 Then
If pi.Name <> "(puste)" Then pi.Delete
End If
Next
Next
.RefreshTable
End With
Application.ScreenUpdating = True
End Sub
pozdrawiam
Rycho |