On/Off vezérlőgomb bármilyen Excel táblázatba bármilyen utasításra

2016. április 23. - Office Guru

Amikor táblázataink, kalkulációnk, "dashboardjaink" feltuningolására gondolunk Excelben, nem kell mindig A4-es lapok sokaságát kitöltő kódsorokban gondolkodni, egy aprócska kis újítással, vizuális automatizációval is le tudjuk nyűgözni táblázatunk felhasználóit. Erre mutatok a következőben egy egyszerű példát, amely nagyjából nem más, mint egy On/Off kapcsoló és az így vezérelt szűrés egy táblázatban.

Adott tehát a táblázatunk, amelyre egy automatikus szűrést fogunk rövidesen ráhúzni:

y01_1.jpgA Ribbonunk Insert füle alatt található Illustrations szekcióból a Shapes menüpont segítségével szúrjunk be egy téglalapot:

y02_1.jpgAztán a Format Ribbonfül alatt szépen formázzuk meg ezt a téglalapot, a keretét, a háttérszínt stb.:

y03_1.jpgEzután ugyanúgy a Shapes menüpontból szúrjunk be egy kört:

y04_1.jpgFormázzuk meg és helyezzük el a téglalapra úgy, ahogy szeretnénk, írjunk hozzá szöveget és értelemszerűen a Shape Properties alatt állítsuk be, hogy egyéb cellák méretének állítása ne változtassa formáink méretét:

y05_1.jpgEzután kattintsunk jobb gombbal a kis körünkre (ami innentől kezdve már gombként fog majd funkcionálni) és rendeljünk hozzá egy makrót a kattintás eseményre:

y07_1.jpgÉs ezzel át is jutottunk a Visual Basic Editorba, ahol elvégezzük a szükséges kódolást, hogy elérjük, amit szeretnénk:

y08_1.jpgAlapvetően elég egyszerű az a terv, amit most végre fogunk hajtani, hiszen egyrészt a gombra való kattintás esetén megvizsgáljuk, hogy van-e szűrés a táblánkon, ha nincs, értelemszerűen szűrünk és elmozdítjuk a körünket plusz megváltoztatjuk a színét. A másik irányban pedig nagyjából ennek az ellenkezőjét tesszük.

Szóval első lépésként megnézzük egy If függvénnyel, hogy az aktív sheetünkön van-e bekapcsolva Filter, mert ha nincs (FALSE), akkor értelemszerűen beállítjuk a táblánkra, majd a tartomány első oszlopában leszűrünk a megadott feltételre:

y09_1.jpgHa ezt megtettük, akkor kell egyrészt elmozdítanunk a gombunkat, plusz megváltoztatnunk a színét.

A gombunk jelenleg default "Oval 2" néven fut, úgyhogy az ActiveSheet.Shapes.Range(Array("Oval 2")) utasítással hivatkozunk rá, a két metódus illetve tulajdonság, amit pedig használni fogunk az IncrementLeft és a Fill.Forecolor.RGB.

Előbbi a meghatározott objektumot mozgatja balra a megadott pontértékkel, utóbbi pedig az objektum színét fogja a megadottra állítani. RGB (0,0,0) a fekete színt jelenti - azaz 21.75 ponttal elcsúsztatjuk a formát és átállítjuk a színét feketére.

y10_1.jpgNe felejtsük, hogy még mindig az If műveletben vagyunk, az előbb vizsgáltuk, hogy mi történjen ha nincs bekapcsolva semmilyen Filter, most azt nézzük meg, hogy mi történjen, ha már be van kapcsolva.

Ebben az esetben elsőként kapcsolja ki a szűrést a kattintásunk, majd mozgassa vissza a fentebb említett 21.75 pontértékkel (negatív számot adjunk tehát meg) a gombot és állítsa a színét pirosra. RGB (255,0,0) a piros színkódja.

y11_1.jpgÉs kész is vagyunk, próbáljuk ki működés közben:

y12.jpg

y13.jpgAhogy látható, ez egy roppant egyszerű kis példa volt, aminél biztos, hogy létezik jobb megoldás is, de remélhetőleg sokak számára ez jó kiindulási alap lehet egy jóval fejlettebb dashboard elkészítéséhez.

A bejegyzés trackback címe:

https://officeguru.blog.hu/api/trackback/id/tr208656868

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.