Automatyczne odświeżanie tabeli przestawnej

Tabele przestawne nie mają (poza odświeżaniem przy otwarciu zeszytu) opcji automatycznego odswieżania wraz ze zmianą danych źródłowych.

Pewnym rozwiązaniem może być zastosowanie kodu VBA zdarzenie uaktywnienia arkusza.

Kod oczywiście umieszczamy w module arkusza w którym znajduje się tabela.

Private Sub Worksheet_Activate()

Dim mysheet As Worksheet
    'definiujemy w którym arkuszu sa dane źródłowe
    Set mysheet = Sheets("Dane")

    Application.ScreenUpdating = False

    'przypisujemy adres zakresu w jakim są dane źródłowe
    '(przy założeniu, że komórka A1 znajduje się w zakresie danych źródłowych)
    myrange = mysheet.Name & "!" & _
    mysheet.Range("A1").CurrentRegion.Address(ReferenceStyle:=xlR1C1)

    'przypisujemy zakres danych źródłowych tabeli przestawnej
    ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:=myrange

    'odświeżamy tabelę przestawną
    ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh

    'ukrywamy paski narzędzi związanych z tabelą przestawną
    ActiveWorkbook.ShowPivotTableFieldList = False
    Application.CommandBars("PivotTable").Visible = False

    Application.ScreenUpdating = True

End Sub