Kimutatás, Pivot tábla automatikus frissítése

Öcsémnek segítettem a hétvégén a munkájához kapcsolódó táblázatok összerakásában. Szépen leképeztük a folyamatot és az adatbevitelt, az összesítéseket pedig kimutatásokkal készítettük el. Ahhoz, hogy az összesítések mindig a legfrissebb adatot mutassák, egy kis VBA kód segítségével megoldottuk, hogy automatikusan frissüljenek a kimutatások minden alkalommal, amikor a kimutatásokat tartalmazó munkalapra kattintunk. Lássuk, hogyan csináltuk!

  1. A példában a kimutatásokat a Kimutatás nevű munkalapra tettük.
  2. Nyisd meg a Visual Basic Editort – ez az Alt+F11 billentyűkombinációval a legegyszerűbb.
  3. A bal oldalon a Project Explorerben keresd meg a munkafüzetet és kattints duplán a Kimutatás munkalap nevén. Ellenőrizd, hogy az editor fejlécében megjelenik a munkalap kódneve (a példában ez Sheet14)Pivot_autorefresh_01
    (Nem baj, ha neked nem jelent meg az Option Explicit – beírhatod kézzel, de e nélkül is működni fog.)
  4. Válaszd ki a (General) alatt a Worksheetet, a (Declarations) alatt az Activate-et a képen látható módon. A kód ablakban megjelent a szükséges programkód részlet. Mit csináltunk most? Beállítottuk, hogy a kiválasztott munkalapnak (Sheet14 Worksheet) az Activate eseményéhez fogunk programot írni. Másképp fogalmazva: amikor a munkalap aktiválódik (rákattintunk) akkor fog a program lefutni. Csak program nincs még. 🙂
    Pivot_autorefresh_02
    (A Worksheet_SelectionChange… részre nincs szükség, alább látod, hogy én kitöröltem.)
  5. Nincs más hátra, mint megírni a programot! 🙂 A Visual Basicben egy-egy program (nevezzük mostantól szakszerűbben eljárásnak) a Sub-bal kezdődik és az End Sub-bal ér véget. Ezek közé írjuk, hogy mit kell csinálni:
    ThisWorkbook.RefreshAll

    Ezt kell beírni az alábbi módon:
    Pivot_autorefresh_03

Kész is van, becsukhatod az ablakot! Próbáld ki, hogy jól működik-e!

Fontos: a fájl mostantól nem menthető a hagyományos .xlsx formátumba! .xlsm (Makróbarát Excel-munkafüzet) vagy .xlsb (Bináris Excel-munkafüzet) formátumot használhatsz. Erről itt írtam részletesebben.

 


Kövesd az Adatkertészetet a Facebookon!


3 comments

    • Avatar
    • Attila on 2018-08-04 at 20:03
    • Válasz

    hello!
    Van egy több munkalapból álló munkafüzetem. Időnként a fenti makrót használva frissitem az adatokat. Ilyenkor többnyire ugrál a képernyő , munkalapok töredékei láthatók. Van valami makrós megoldás arra, hogy ehelyett valami szöveges üzenet jelenjen meg a folyamatról vagy avval kapcsolatban. De elég volna annyi is, hogy : a frissités folyamatban….

    Köszi előre is a választ. Üdvözlettel: U Attila

    • Avatar
    • Margitai Péter on 2018-09-18 at 14:52
    • Válasz

    Ezeket próbáld meg:

    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = 0
    Application.ScreenUpdating = False

    a kódod …

    Application.EnableEvents = 1
    Application.ScreenUpdating = True
    End Sub

    1. …azért ezzekkel az Application. beállításokkal óvatosan… Ilyet hibakezelés nélkül nem szabadna használni.
      Szóval inkább így, szokjuk meg ezt, vagy ehhez hasonló megoldásokat még egyszerű kódok esetében is.

      Private Sub Worksheet_Activate()

      On Error GoTo Errorhandler
      Application.ScreenUpdating = False

      ThisWorkbook.RefreshAll

      Application.ScreenUpdating = True
      Exit Sub

      Errorhandler:
      Application.ScreenUpdating = True

      End Sub

Vélemény, hozzászólás?

Your email address will not be published.

css.php