Az alábbi eset az egyik ügyfelünknél merült fel. Egy összesítő táblát készítettek, ahol több, egymástól függő legördülő listából kiválasztott elemek segítségével készült el egy riport. Ha viszont a már kiválasztott elemeket változtatták meg, a feljebb lévő kategória nem változott, így fals eredményt adott. Nézzünk meg erre egy megoldást!
Az alábbi példában látszik egy egyszerű eset:
Arról, hogy mi is az EXCEL VBA, ebben a bejegyzésünkben olvashatsz bővebben!
A leírásban használt fájlt innen letöltheted: Excel VBA – Reakció cella változására
Az első listában kiválasztható az ország, majd az országtól függően egy hozzá tartozó kereskedő.
Ha sorban választjuk ki az elemeket, akkor nincsen semmi gond, tökéletesen működik a két lista. A gond akkor keletkezik, amikor újra választunk egy országot, de a kiválasztott Kereskedő ettől még nem változik meg, így akár egy helytelen eredményre is vezethet a két cellát használó kimutatás.
Itt kiválasztottuk Romániát, de a Kereskedőt még nem, így egy olyan kereskedő szerepel a cellában, ami nem is tartozik a kiválasztott országhoz.
Ilyen esetben szükségünk van egy eseményre reagáló makróra, ami az adott cella megváltozása esetén felülírja a Kereskedő alatt kiválasztott elemet, ezzel jelezve, hogy még ott is kell egy választást tennünk.
A fájl 13-14. sorában található listák már így működnek. Nézzük meg hogy is reagált az Excel a változásra:
Ebben az esetben a makró már működésbe lépett és felülírta a cella tartalmát.
A makró kódja pedig a következő:
A kódot az adott munkalaphoz kell rendelnünk, azaz annak a kódablakába kell megírnunk.
A működése pedig nagyon egyszerű. Ez a makró minden egyes a munkalapon történő változáskor lefut. A benne lévő IF elágazás pedig megvizsgálja, hogy az adott változás az A14-es cellában történt-e (itt található az országot választó legördülő lista). Amennyiben igen, akkor a B14-es cella (kereskedő választás) tartalmát felülírja, minden más esetben pedig nem csinál semmit.
Így tehát nem állhat elő az a helyzet, hogy az adott ország mellett egy helytelen kereskedő áll.
Ha tetszett, kérlek, oszd meg másokkal is a bejegyzést!