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!

Excel VBA – Reakció cella változására

A leírásban használt fájlt innen letöltheted: Excel VBA – Reakció cella változására

VBA változó cella

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.

VBA változó cella

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:

VBA változó cella

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ő:

Copy to Clipboard

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!