Office Guru

Játszadozás Data Validation Listekkel - egymáshoz kapcsolódás és statikus nyíl megjelenítése

2017. október 29. - Office Guru

A mai posztot egy bocsánatkéréssel kezdem, hiszen sajnos az elmúlt hetekben nem igazán jutott idő a blogra, de ennek persze azért volt olyan előnye is, hogy ebben a néhány napban azért sikerült pár érdekes problémával és megoldással találkoznom, úgyhogy megint bőven van miről írni. Ma két olvasói felvetés gyors megválaszolásával melegítünk be, az első az ezen a linken már hosszassabban kifejtett, egymáshoz kapcsolódó Data Validation Listekhez kapcsolódik - ugye ez az a megoldás, amikor egy listából kiválasztott értékünk meghatározza a következő lista értékeit és így tovább.

capture1_1.JPG

capture2_1.JPGA probléma ezzel a megoldással az, hogy ha már kiválasztottunk értékeket minden listánkból és utána visszamegyünk az első legördülő menübe, akkor hiába választunk más értéket, a kapcsolódó listákban default értékként a korábban kiválasztott elemek szerepelnek:

capture3_1.JPG

capture4_1.JPGUgyebár Toyotát választottam az Autó legördülő menüben, így jó lenne, ha nem maradna a Típus legördülő menünél egy Audi típus. Ennek kiküszöbölésére az egyik megoldás, ha az Autó legördülő menünk Data Validation beállításait megbütyköljük, azaz a Source mezőhöz beírunk egy feltételt:

=IF(F4="",Autó,INDIRECT("XY"))

capture5_1.JPGEzzel azt érjük el, hogy ha az első kapcsolódó legördülő menü (jelen példánkban ez a típus, az F4 cella) cellája nem üres, akkor nem tudjuk kiválasztani az Autó legördülő menünket egyáltalán, tehát konkrétan elakad a történet. Ennek súlyos hátránya, hogy állandóan törölgetni kell a korábbi kiválasztásokat, amiről persze tájékoztatni kell a felhasználókat, ellenkező esetben felesleges kommunikációval tölthetjük az időnket. Mindenesetre egymásnak ellentmondó kiválasztások nem maradhatnak.

A másik megoldás egy apró makró használata a VBA-editorban:

capture6_1.JPGAz adott munkalapunk változás eseményéhez fogunk egy kódot hozzárendelni, méghozzá úgy, hogy megnézzük, hogy a változás hányadik oszlopban történt (If Target.Column = 4) és ha ez az az oszlop a negyedik (jelen példánk Autó legördülő listájának cellája), akkor megnézi, hogy az adott oszlopban van-e Data Validation Listünk (If Target.Validation.Type = 3) és ha ez is teljesül, akkor az adott data validation listától kettővel jobbra található cellát kiüríti (Target.Offset(0,2).ClearContents).

A másik kérdés a Data Validation listák mellett megtalálható nyilacskát érinti, amely ugyebár csak akkor jelenik meg, ha a listát tartalmazó cellán állunk - vajon elérhetjük-e valahogy azt, hogy mindig látszódjon nyíl az ilyen cellák mellett? Nos, beépített funkcionalitással nem (de javaslatok jöhetnek), viszont egy egyszerű kis linkeléssel megoldható a dolog. Szóval adott ez a helyzet:

capture7_1.JPGAzt szeretnénk, hogy bár nem állunk a Típus melletti legördülő menü cellájában, mégis lássuk azt, hogy ez egy Data Validation List. Én egyszerűen csak készítettem egy képernyőfelvételt a Snipping Toollal egy Data Validation List nyiláról, majd beszúrtam a mellette lévő cellába:

capture12.JPGEzután pedig a kis ikonra való jobb gombbal kattintás után kiválasztottam az Assign Macro utasítást a context menüből, és hozzárendeltem egy

Range("F4").Select

utasítást, azaz ha valaki a kis nyílra kattint, akkor azonnal megjelenik a "rendes" nyíl is, hiszen az F4-es, data validation listet tartalmazó cellára visz minket a kattintás. Gagyi és sok ilyen listánál már eléggé melós dolog, de ettől függetlenül egyszerű és működik.

capture13.JPG

A bejegyzés trackback címe:

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

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.
süti beállítások módosítása