Avatar billede msl_ddm Nybegynder
26. august 2015 - 12:23 Der er 4 kommentarer og
1 løsning

Automatisk opdatering af pivottabeller hver 2. minut

Hej alle

Jeg har et dokument indeholdene nogle datatabeller, som bearbejdes i Excel, hvorefter de danner grundlag for 3 pivottabeller.

Datatabellerne opdateres automatisk hvert 2. minut.

Da pivottabellerne ikke er baseret på direkte eksterne data, kan jeg umiddelbart ikke få disse til at opdatere automatisk, derfor tænkte jeg, om disse kunne opdateres vha. en timer eller ved at måle på ændringer i en navngiven celle - Jeg har f.eks. en stamdatatabel hvori jeg har tilføjet en kolonne med "NU()"-formlen, denne opdaterer automatisk hvert 2. minut, således jeg kan vise hvornår mine data sidst er ajourført.

Findes der en VBA løsning hertil? Det drejer sig om følgende navngivne pivottabeller:

- PerformanceIDAG
- PerformanceUGE
- PerformanceUGEspec

Arket tabellerne er placeret i, hedder "Opfølgning".
Avatar billede natkatten Mester
26. august 2015 - 13:42 #1
Prøv med dette.

Sæt denne kode ind i selve projektmappens kodemodul (Denne_projektmappe i den danske udgave af Excel)

Private Sub Workbook_Open()
    PivotTimer
End Sub

Og sæt denne kode ind i et modul:

Sub PivotTimer()
  Dim pivotTable As pivotTable
  For Each pivotTable In ActiveSheet.PivotTables
    pivotTable.RefreshTable
  Next
  Application.OnTime Now + TimeValue("00:02:00"), "PivotTimer"
'Hvis den skal refreshes oftere, f.eks. hvert halve minut
'så ret TimeValue tiul ("00:00:30")
End Sub
Avatar billede msl_ddm Nybegynder
26. august 2015 - 21:18 #2
Hej Natkatten

Tak for dit forslag. Jeg har fundet en høkermetode som virker upåklageligt. Jeg synes dog du skal smide et svar, da din løsning sikkert ligeledes vil fungere efter ønsket :)
Avatar billede natkatten Mester
27. august 2015 - 07:51 #3
Ok. Vurder om du vil tage points retur. I så fald opret selv et svar og afvis dette.
Avatar billede lagunadk Novice
27. august 2015 - 08:16 #4
Hej msl_ddm.

Kan du beskrive din høker, for en nysgerrig? :)
Avatar billede msl_ddm Nybegynder
27. august 2015 - 10:43 #5
Hej Laguna

Det kan du tro, det er egentligt en kombination af to tidligere anvendte kodestykker:

#1 En funktion (MODULE) der på timer, kopierer en anden celle og indsætter indholdet som værdi. Her har jeg i celle A2 en =NU() formel, som hvert 10. sekund kopieres og indsættes som værdi i A3.

Dim TimeToRun

Sub auto_open()
    Call ScheduleCopyPriceOver
End Sub

Sub ScheduleCopyPriceOver()
    TimeToRun = Now + TimeValue("00:00:10")
    Application.OnTime TimeToRun, "CopyPriceOver"
End Sub

Sub CopyPriceOver()
    Calculate
    Range("a3").Value = Range("a2").Value
    Call ScheduleCopyPriceOver
End Sub

Sub auto_close()
    On Error Resume Next
    Application.OnTime TimeToRun, "CopyPriceOver", , False
End Sub


#2 En funktion der opdaterer en række udvalgte pivottabeller, såfremt der sker ændring i værdierne i A1:A3. NU() formlen er indtastet i en stamdatakolonne i en tabel som er trukket fra en SQL forbindelse. Denne tabel opdaterer automatisk hvert minut (dette er en standardindstilling). Det vil sige at min NU() formel opdateres hvert minut. MEN, uden ovenstående funktion i #1, læser nedenstående funktion ikke ændringen i NU() funktionen, som en reelt ændring af værdierne i A1:A3, det gør den derimod når værdien kopieres ind og overskriver den eksisterende værdi i A3.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("A1:A3")
   
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
          Is Nothing Then

        ' Display a message when one of the designated cells has been
        ' changed.
        ' Place your code here.
    ActiveSheet.PivotTables("SalgsperformanceDAG").PivotCache.Refresh
      ActiveSheet.PivotTables("SalgsperformanceUGE").PivotCache.Refresh
      ActiveSheet.PivotTables("SalgsperformanceUGEspec").PivotCache.Refresh
   
     
    End If
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester