A következőkben egy olyan poszttal folytatom a blogot, ami önmagában roppantul egyszerű kis VBA-kódot tartalmaz, de a terveimben szereplő következő írások alapjául szolgál majd a benne lévő kis tudás - szóval, ha valaki úgy ítéli meg, hogy túlságosan egyszerű vagy értelmetlen az itteni írás, nyugodtan ignorálja.
A probléma, amit meg fogunk oldani, szintén nem túl komplex és nem is lenne hozzá szükség VBA-ra, hiszen a lentebb látható VLOOKUPot kellene csak végrehajtanunk a Település azonosító felhasználásával:
Alt+F11 segítségével szépen menjünk csak át a VBA-editorunkba, hogy hozzá is láthassunk a rövid kódunk megalkotásához. Nem kell hozzá nagy ördöngösség, hogy belássuk, ugyanazt a Vlookup funkciót fogjuk használni VBA-ban is, mint ami elérhető a formulák közül.
Kezdésként létrehozunk két változót, Nevsor illetve Nevoszlop néven Integer típussal, később ezekben fogjuk tárolni majd a kitöltendő celláink sor- illetve oszlopszámait:
Ezután adjuk meg a kis programunknak, hogy melyik az a tábla, ahol az érték bekeresésének alapjául szolgáló azonosító van és melyik az a tábla, amelyikből felkeressük a szükséges értékünket ezen azonosító alapján - én ezeket Főtábla illetve Altábla néven neveztem el ezeket:
Ahogy látszik, a Főtáblánk azon táblánk azonosító oszlopa, amelyben az értékekre lesz szükségünk, az Altábla pedig az, ami az azonosítót és magát az értékeket tartalmazza. Folytatásként feltöltjük a Nevsor illetve Nevoszlop változóinkat, értelemszerűen az első, feltöltésre váró üres cellánk sor- illetve oszlopszámával:
Egy lépés van még hátra, méghozzá egy For..Next ciklus, hiszen mit is fogunk csinálni? Minden egyes, Főtáblánkban található cellán haladjunk végig (For Each cl in Fotabla), majd az első Sheetünk (itt bármit megadhatunk persze) Nevsor illetve Nevoszlop által meghatározott cellája legyen egyenlő egy konkrét Vlookup függvénnyel:
Sheet1.Cells(Nevsor, Nevoszlop) = Application.WorksheetFunction.VLookup(cl, Altabla, 2, False)
Látható, hogy szimplán ugyanazt a funkciót meghívjuk, amit a Formulas képernyőről érünk el, majd megadjuk ugyanazok a paramétereket:
Lookup_value = értelemszerűen a Főtábla aktuális azonosítója
Table_array = ahol keressen, ez pedig az Altablank lesz, amelynek első oszlopa az azonosító
Col_index_num = hányadik oszlop értékét írja ki találat esetén
Range_lookup = csak pontos egyezést fogadjunk-e el
Hátra már csak az a lépés marad, hogy folytassuk a ciklusunkat, azaz egyrészt növeljük meg eggyel a kitöltendő celláknál a sorok számát, majd ugorjunk a Főtábla következő cellájára.
Ahogy látható, bármilyen plusz üzenettel megspékelhetjük még ezt a kis kódot, de ez nem is létfontosságú, a lényeg, hogy ha ezt most lefuttatjuk, meg is van az eredményünk:
Tehát megvan az első lépés, a következőkben az itt megszerzett ismeretre fogunk majd építeni, ahogy elkészítünk egy nagyobb lélegzetvételű (ám önmagában még mindig csak aprónak számító) makrót.